JavaA2Z

KAB-studio > プログラミング > JavaA2Z > 検索とは

検索

日本語 検索
英語 search
ふりがな けんさく
フリガナ ケンサク

解説

ある複数の対象の中からひとつを見つけ出すこと。
配列等の「複数のデータ」の中から、条件に一致するデータを見つけ出すこと。
基本的には「上から順に見ていく」ことになるが、「全て見る」ことを避けるためのアルゴリズムがいくつか存在する。
 
Javaでは、配列の検索はArraysクラスのbinarySearch()メソッドを使用する。
ただし、binarySearch()メソッドはバイナリサーチのアルゴリズムを使用し、このアルゴリズムの特性上「配列ソート済みである」必要がある。
また、データベースからの検索はSELECTによるクエリーう。
 
一見簡単そうな処理であるが、実は非常に悩みの種になりやすい処理でもある。
特に「データベースを検索する」「データ数が膨大」「ブラウザで表示する」場合に処理が非常に難しくなる。
まず、データベース検索をう場合、データベースの設定等によって「大文字小文字の違い」「エスケープシーケンス」「文字コード」等の問題により「見つかるはずのものが見つからない」場合が出てくる。また、検索条件を複雑にすると、SQLでは実現できず、全データを取り出してから検索するか、ストアドプロシージャ等を利用する必要が出てくる。
検索条件の問題はプログラム上でうことで解決できるが、その場合、データ数が非常に多いと現実的に処理が不可能となる。特にインターネットからの検索の場合、待ち時間はせいぜい10秒であり、検索にそれ以上の時間が掛かる場合サービスとして意味を成さなくなる。
さらに、Webブラウザで表示する場合、表示領域やネットワークの通信量の問題から、データを小分けに送信する必要がある。この場合、「次を表示」等で再検索をうことにより待ち時間が発生してしまうため、検索結果を一時的に保存する等の措置が必要となる。
 
検索機能は最も基本的な機能であり当然利用できる機能であり、そのため利用者の要望は厳しい。しかしその要望に答えられるだけの検索機能を実現するのは思いの外難しいことを肝に銘じておいた方がいいだろう。

参考サイト


(KAB-studioからのおしらせです)

サンプルプログラム(とか)サンプルを別ウィンドウで表示サンプルをクリップボードへコピー(WindowsでIEの場合のみ)

// Sample.java
import java.util.Arrays;

public class Sample
{
    public static void main( String[] args )
    {
        // 検索対象の配列を作ります。
        // 注:バイナリサーチの場合、検索対象がソートされている必要があります。
        int[] ints = new int[]{ 100, 300, 500, 700, 900 };

        // 検索します。
        int result = Arrays.binarySearch( ints, 500 );
        // 返されてくるのはインデックスナンバーです。
        System.out.println( result );
        // 2
        System.out.println( ints[result] );
        // 500
    }
}
// Sample.java
import java.util.Arrays;

public class Sample
{
    public static void main( String[] args )
    {
        // 検索対象の配列を作ります。
        // 注:バイナリサーチの場合、検索対象がソートされている必要があります。
        int[] ints = new int[]{ 100, 300, 500, 700, 900 };

        // 検索します。
        int result = Arrays.binarySearch( ints, 500 );
        // 返されてくるのはインデックスナンバーです。
        System.out.println( result );
        // 2
        System.out.println( ints[result] );
        // 500
    }
}

この単語を含むページ

「みだし」に含まれているページ

はてなブックマーク 詳細を表示 はてなブックマーク ブックマーク数
livedoorクリップ 詳細を表示 livedoorクリップ ブックマーク数
Yahoo!ブックマーク 詳細を表示 users
del.icio.us 登録する RSSに登録
サンプルを別ウィンドウで表示
サンプルをクリップボードへコピー(WindowsでIEの場合のみ)
update:2005/10/11
このページは、Javaプログラミング言語についての用語を網羅した辞書「JavaA2Z」の一ページです。
詳しくは「JavaA2Z」表紙の説明をご覧ください。