(57)【要約】  前回の検索条件と前方一致する検索条件に対して、探索木上の探索範囲を限定して検索を行う場合に、検索をより高速に行う。  探索木記憶部２１０は、要素列である複数の検索対象を表す探索木を記憶する。前回検索条件記憶部２４０は、前回検索要素列を記憶する。前回探索経路記憶部２５０は、探索木において前回検索要素列を探索する場合に辿るノードの内、注目順位に対応する階層のノードを示す前回探索経路情報を記憶する。探索開始ノード判定部１１０は、入力された検索要素列と前回検索要素列とで、注目順位より前の要素列を一括して比較し、一致する場合、前回探索経路情報で示されるノードを探索開始ノードと決定する。検索部１２０は、探索木上の探索開始ノードから、入力された検索要素列の注目順位以降の要素について探索を行う。
2013108333.tif 000002
【特許請求の範囲】
【請求項１】
要素列である複数の検索対象を表し、ルートからの各階層に要素列の先頭からの各順位を対応付けた探索木を記憶する探索木記憶手段と、
前回の検索要素列を記憶する前回検索条件記憶手段と、
前記探索木において前記前回の検索要素列を探索する場合に辿るノードの内、注目順位に対応する階層のノードを示す前回探索経路情報を記憶する前回探索経路情報記憶手段と、
入力された検索要素列と前記前回の検索要素列との間で、前記注目順位より前の要素列を一括して比較し、一致する場合、前記前回探索経路情報で示されるノードを探索開始ノードと決定する探索開始ノード判定手段と、
前記探索木上の前記探索開始ノードから、前記入力された検索要素列の前記注目順位以降の要素について探索を行うことにより、前記複数の検索対象から前記入力された検索要素列を検索する検索手段と、を含む検索装置。
【請求項２】
前記前回探索経路情報は、前記探索木において前記前回の検索要素列を探索する場合に辿るノードの内、複数の前記注目順位の各々に対応する階層のノードを示し、
前記探索開始ノード判定手段は、入力された検索要素列と前記前回の検索要素列との間で、前記複数の注目順位のいずれかより前の要素列が一致する場合、前記前回探索経路情報で示される当該注目順位に対応するノードを、前記探索開始ノードと決定する、請求項１に記載の検索装置。
【請求項３】
さらに、前記入力された検索要素列と前記前回の検索要素列との間で各順位の要素を比較し、他の順位に比べて要素が不一致となった回数が多い順位を、前記注目順位に設定する注目順位更新手段を含む、請求項１または２に記載の検索装置。
【請求項４】
さらに、前記入力された検索要素列と前記前回の検索要素列との間で各順位の要素を比較し、各順位に要素が不一致となった回数の順番を示す再整列順位を付与し、前記複数の検索対象の要素列の各順位を当該再整列順位に従って並び変え、当該並び変えられた前記複数の検索対象に対して前記探索木を生成する探索木更新手段を含み、
前記検索手段は、前記再整列順位に従って並び変えられた前記入力された検索要素列を、前記生成された探索木上で検索する、請求項１または２に記載の検索装置。
【請求項５】
要素列である複数の検索対象を表し、ルートからの各階層に要素列の先頭からの各順位を対応付けた探索木を記憶し、
前回の検索要素列を記憶し、
前記探索木において前記前回の検索要素列を探索する場合に辿るノードの内、注目順位に対応する階層のノードを示す前回探索経路情報を記憶し、
入力された検索要素列と前記前回の検索要素列との間で、前記注目順位より前の要素列を一括して比較し、一致する場合、前記前回探索経路情報で示されるノードを探索開始ノードと決定し、
前記探索木上の前記探索開始ノードから、前記入力された検索要素列の前記注目順位以降の要素について探索を行うことにより、前記複数の検索対象から前記入力された検索要素列を検索する、検索方法。
【請求項６】
前記前回探索経路情報は、前記探索木において前記前回の検索要素列を探索する場合に辿るノードの内、複数の前記注目順位の各々に対応する階層のノードを示し、
前記探索開始ノードを決定する場合、入力された検索要素列と前記前回の検索要素列との間で、前記複数の注目順位のいずれかより前の要素列が一致する場合、前記前回探索経路情報で示される当該注目順位に対応するノードを、前記探索開始ノードと決定する、請求項５に記載の検索方法。
【請求項７】
さらに、前記入力された検索要素列と前記前回の検索要素列との間で各順位の要素を比較し、他の順位に比べて要素が不一致となった回数が多い順位を、前記注目順位に設定する、請求項５または６に記載の検索方法。
【請求項８】
コンピュータに、
要素列である複数の検索対象を表し、ルートからの各階層に要素列の先頭からの各順位を対応付けた探索木を記憶し、
前回の検索要素列を記憶し、
前記探索木において前記前回の検索要素列を探索する場合に辿るノードの内、注目順位に対応する階層のノードを示す前回探索経路情報を記憶し、
入力された検索要素列と前記前回の検索要素列との間で、前記注目順位より前の要素列を一括して比較し、一致する場合、前記前回探索経路情報で示されるノードを探索開始ノードと決定し、
前記探索木上の前記探索開始ノードから、前記入力された検索要素列の前記注目順位以降の要素について探索を行うことにより、前記複数の検索対象から前記入力された検索要素列を検索する、処理を実行させる検索プログラムを格納する、
コンピュータが読み取り可能な記録媒体。
【請求項９】
前記前回探索経路情報は、前記探索木において前記前回の検索要素列を探索する場合に辿るノードの内、複数の前記注目順位の各々に対応する階層のノードを示し、
前記探索開始ノードを決定する場合、入力された検索要素列と前記前回の検索要素列との間で、前記複数の注目順位のいずれかより前の要素列が一致する場合、前記前回探索経路情報で示される当該注目順位に対応するノードを、前記探索開始ノードと決定する処理を実行させる前記検索プログラムを格納する、請求項８に記載のコンピュータが読み取り可能な記録媒体。
【請求項１０】
さらに、前記入力された検索要素列と前記前回の検索要素列との間で各順位の要素を比較し、他の順位に比べて要素が不一致となった回数が多い順位を、前記注目順位に設定する処理を実行させる前記検索プログラムを格納する、請求項８または９に記載のコンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検索装置、検索方法、及び、検索プログラムに関し、特に、木構造の探索により検索を行う検索装置、検索方法、及び、検索プログラムに関する。
【背景技術】
【０００２】
検索対象である複数の要素列から、検索条件の要素列を、木構造を用いて検索する検索装置が知られている。ここで、要素列は、所定の順序で整列された複数の要素により構成される。要素は、例えば、文字データ等の小単位のデータである。【０００３】
このような検索装置として、トライ木構造を利用した検索装置がある。図２２は、トライ木構造の例を示す図である。【０００４】
トライ木構造では、要素列の各順位（先頭からの順序、または、位置）が、木構造の階層に対応付けられる。また、トライ木構造は、階層毎に、当該階層に対応する順位の各要素について一致判定を行うためのノードを持つ。各ノードは、検索条件と比較を行う要素、及び、当該要素と一致した場合に、次に辿る子ノードへのリンクを持つ。さらに、トライ木構造は、検索対象を格納する葉ノードを持つ。【０００５】
図２２の木構造は、検索対象の要素列が、４つのアルファベット文字列「ａａ」、「ａｂ」、「ｂａ」、「ｂｂ」の場合の例である。ここで、１番目の階層には、順位「１」の要素について一致判定を行うためのノード識別子Ｎ１のノード、２番目の階層には、順位「２」の要素について一致判定を行うためのノード識別子Ｎ２１、Ｎ２２のノードが配置されている。また、ノード識別子Ｎ１のノードは、文字「ａ」に対してノード識別子Ｎ２１のノードへのリンク、文字「ｂ」に対してノード識別子Ｎ２２のノードへのリンクを持つ。さらに、葉ノードとして、検索対象である４つのアルファベット文字列を格納する、ノード識別子Ｎ３１、Ｎ３２、Ｎ３３、Ｎ３４のノードが配置される。【０００６】
トライ木構造を利用した検索装置では、検索結果を得るために、以下のような木構造の探索が行われる。まず、根ノードの要素に、検索条件の順位「１」（先頭）の要素と一致する要素があるかどうかが判定（一致判定）され、一致する要素が存在すれば、当該要素に対するリンクで示された子ノードへの移動が行われる。次に、子ノードにおいて、同様に、ノードの要素に、検索条件の次の順位の要素と一致する要素があるかどうかが判定され、一致する要素が存在すれば、当該要素に対するリンクで示された子ノードへの移動が行われる。このように、一致判定の結果に従って、次のノードに移動することを、ノードを辿ると定義する。一致する要素が無い場合、木構造の探索は終了する。以上の動作が、葉ノードに辿り着くまで繰り返され、葉ノードに格納されている検索対象が、検索結果として出力される。【０００７】
例えば、図２２において、検索条件として文字列「ａａ」が入力された場合、ノード識別子Ｎ１のノードにおいて、順位「１」の文字の一致判定が行われ、文字「ａ」との一致判定結果が得られる。次に、文字「ａ」に対応するリンクにより示されるノード識別子Ｎ２１のノードにおいて、順位「２」の文字の一致判定が行われ、文字「ａ」との一致判定結果が得られる。文字「ａ」に対応するリンクにより示されるノード識別子Ｎ３１のノードは葉ノードであるため、文字列「ａａ」が、検索結果として出力される。【０００８】
トライ木構造を利用した検索装置では、検索を連続して行う場合に、連続する検索条件の要素列の先頭からある順位までの要素が一致（前方一致）する場合でも、検索を行うたびに、トライ木構造の根ノードからの探索を行う必要があるという問題があった。【０００９】
このような連続した検索を高速化する技術の一例が、例えば、特許文献１に記載されている。特許文献１の検索装置は、前回の検索条件の要素列と、前回の検索における木構造の探索で辿ったノードを記憶する。新たに検索条件が入力されると、検索装置は、前回の検索条件の要素列と入力された検索条件の要素列を、先頭の順位から比較し、一致か不一致かを判定する。そして、検索装置は、前回の検索において辿ったノードの内、不一致と判定された順位の１つ上位の順位に対応するノード（探索開始ノード）から、入力された検索条件に対する探索を開始する。これにより、木構造における探索開始ノードまでの探索が省略され、探索範囲が当該探索開始ノード以下のノードに限定されるため、検索が高速化される。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開平１１−１８４８５７号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
上述の特許文献１に記載された技術では、探索開始ノードを決定するために、要素列の先頭から順番に要素の比較を繰り返す必要があり、検索に時間がかかるという問題がある。【００１２】
本発明の目的は、上述の課題を解決し、前回の検索条件と前方一致する検索条件の検索を探索木上の探索範囲を限定して行う場合に、検索をより高速化できる、検索装置、検索方法、及び、検索プログラムを提供することである。
【課題を解決するための手段】
【００１３】
本発明の一態様における検索装置は、要素列である複数の検索対象を表し、ルートからの各階層に要素列の先頭からの各順位を対応付けた探索木を記憶する探索木記憶手段と、前回の検索要素列を記憶する前回検索条件記憶手段と、前記探索木において前記前回の検索要素列を探索する場合に辿るノードの内、注目順位に対応する階層のノードを示す前回探索経路情報を記憶する前回探索経路情報記憶手段と、入力された検索要素列と前記前回の検索要素列との間で、前記注目順位より前の要素列を一括して比較し、一致する場合、前記前回探索経路情報で示されるノードを探索開始ノードと決定する探索開始ノード判定手段と、前記探索木上の前記探索開始ノードから、前記入力された検索要素列の前記注目順位以降の要素について探索を行うことにより、前記複数の検索対象から前記入力された検索要素列を検索する検索手段と、を含む。【００１４】
本発明の一態様における検索方法は、要素列である複数の検索対象を表し、ルートからの各階層に要素列の先頭からの各順位を対応付けた探索木を記憶し、前回の検索要素列を記憶し、前記探索木において前記前回の検索要素列を探索する場合に辿るノードの内、注目順位に対応する階層のノードを示す前回探索経路情報を記憶し、入力された検索要素列と前記前回の検索要素列との間で、前記注目順位より前の要素列を一括して比較し、一致する場合、前記前回探索経路情報で示されるノードを探索開始ノードと決定し、前記探索木上の前記探索開始ノードから、前記入力された検索要素列の前記注目順位以降の要素について探索を行うことにより、前記複数の検索対象から前記入力された検索要素列を検索する。【００１５】
本発明の一態様におけるコンピュータが読み取り可能な記録媒体は、コンピュータに、要素列である複数の検索対象を表し、ルートからの各階層に要素列の先頭からの各順位を対応付けた探索木を記憶し、前回の検索要素列を記憶し、前記探索木において前記前回の検索要素列を探索する場合に辿るノードの内、注目順位に対応する階層のノードを示す前回探索経路情報を記憶し、入力された検索要素列と前記前回の検索要素列との間で、前記注目順位より前の要素列を一括して比較し、一致する場合、前記前回探索経路情報で示されるノードを探索開始ノードと決定し、前記探索木上の前記探索開始ノードから、前記入力された検索要素列の前記注目順位以降の要素について探索を行うことにより、前記複数の検索対象から前記入力された検索要素列を検索する、処理を実行させる検索プログラムを格納する。
【発明の効果】
【００１６】
本発明の効果は、前回の検索条件と前方一致する検索条件の検索を探索木上の探索範囲を限定して行う場合に、検索をより高速化できることである。
【図面の簡単な説明】
【００１７】
【図１】本発明の第１の実施の形態の特徴的な構成を示すブロック図である。
【図２】本発明の第１の実施の形態における、検索装置１００の構成を示すブロック図である。
【図３】本発明の第１の実施の形態における、検索処理を示すフローチャートである。
【図４】本発明の第１の実施の形態における、探索処理の詳細を示すフローチャートである。
【図５】本発明の第１の実施の形態における、探索木３００の例を示す図である。
【図６】本発明の第１の実施の形態における、探索木情報３１０の例を示す図である。
【図７】本発明の第１の実施の形態における、注目順位情報３２０の例を示す図である。
【図８】本発明の第１の実施の形態における、検索毎の前回検索条件３４０、及び、前回探索経路情報３５０の例を示す図である。
【図９】本発明の第２の実施の形態における、検索装置１００の処理を示すフローチャートである。
【図１０】本発明の第２の実施の形態における、注目順位情報３２１の例を示す図である。
【図１１】本発明の第２の実施の形態における、検索毎の前回検索条件３４０、及び、前回探索経路情報３５１の例を示す図である。
【図１２】本発明の第３の実施の形態における、検索装置１００の構成を示すブロック図である。
【図１３】本発明の第３の実施の形態における、注目順位更新処理を示すフローチャートである。
【図１４】本発明の第３の実施の形態における、要素変化数情報３６０の例を示す図である。
【図１５】本発明の第４の実施の形態における、検索装置１００の構成を示すブロック図である。
【図１６】本発明の第４の実施の形態における、検索処理を示すフローチャートである。
【図１７】本発明の第４の実施の形態における、探索木更新処理を示すフローチャートである。
【図１８】本発明の第４の実施の形態における、再整列順位情報３７０の例を示す図である。
【図１９】本発明の第４の実施の形態における、検索対象の再整列の例を示す図である。
【図２０】本発明の第４の実施の形態における、探索木３０１の例を示す図である。
【図２１】本発明の第４の実施の形態における、探索木情報３１１の例を示す図である。
【図２２】トライ木構造の例を示す図である。
【発明を実施するための形態】
【００１８】
（第１の実施の形態）
次に、本発明の第１の実施の形態について説明する。
【００１９】
はじめに、本発明の第１の実施の形態の構成について説明する。図２は、本発明の第１の実施の形態における、検索装置１００の構成を示すブロック図である。
【００２０】
図２を参照すると、本発明の第１の実施の形態の検索装置１００は、探索開始ノード判定部１１０、検索部１２０、探索木記憶部２１０、注目順位記憶部２２０、前回検索条件記憶部２４０、及び、前回探索経路記憶部２５０を含む。
【００２１】
ここで、探索木記憶部２１０は、探索木３００の木構造を示す探索木情報３１０を記憶する。
【００２２】
図５は、本発明の第１の実施の形態における、探索木３００の例を示す図である。図５の探索木３００は、検索対象が、アルファベット文字を要素とする、要素列長が３の６つの要素列「ａａａ」、「ａａｂ」、「ａｂａ」、「ａｂｂ」、「ｂａａ」、及び、「ｂａｂ」である場合の例である。ここで、要素列における各要素の先頭からの順序（位置）を順位と定義する。探索木３００は、１番目の階層に、順位「１」の要素について一致判定を行うためのノード識別子Ｎ１のノード、２番目の階層に、順位「２」の要素について一致判定を行うためのノード識別子Ｎ２１、Ｎ２２のノード、及び、３番目の階層に、順位「３」の要素について一致判定を行うためのノード識別子Ｎ３１、Ｎ３２、Ｎ３３を持つ。また、探索木３００は、葉ノードとして、検索対象を格納する、ノード識別子Ｎ４１、Ｎ４２、Ｎ４３、Ｎ４４、Ｎ４５、Ｎ４６のノードを持つ。
【００２３】
図６は、本発明の第１の実施の形態における、探索木情報３１０の例を示す図である。図６の探索木情報３１０は、図５の探索木３００に対応する。
【００２４】
探索木情報３１０は、「ノードＩＤ」、「順位」、「子ノードリンク情報」、及び、「検索対象」を含む。ここで、「ノードＩＤ」はノードの識別子を示す。「順位」は、当該ノードの探索木３００上の階層に対応し、当該ノードで一致判定を行う要素の順位を示す。なお、順位「１」は、探索木３００上の根ノードの階層に対応する。「子ノードリンク情報」は、「要素」及び「子ノードＩＤ」を含む。「要素」は、一致判定を行う要素の値を示す。「子ノードＩＤ」は、検索条件の要素列の「順位」で示される順位の要素の値と「要素」で示される値とが一致した場合の移動先である、子ノードの識別子を示す。なお、葉ノードは子ノードを持たないため、葉ノードには、「子ノードリンク情報」は設定されない。「検索対象」は、検索対象の要素列を示す。なお、葉ノード以外のノードには、「検索対象」は設定されない。探索木情報３１０は、予め、ユーザ等により、検索対象の要素列に基づいて生成され、探索木記憶部２１０に設定される。
【００２５】
注目順位記憶部２２０は、注目順位情報３２０を記憶する。図７は、本発明の第１の実施の形態における、注目順位情報３２０の例を示す図である。注目順位情報３２０は、注目順位を示す。探索開始ノードを決定する場合、入力された検索条件の要素列と前回検索条件３４０の要素列との間で、注目順位より前の要素列が比較される。注目順位情報３２０は、予め、ユーザ等によりに設定される。
【００２６】
前回検索条件記憶部２４０は、前回検索条件３４０を記憶する。前回探索経路記憶部２５０は、前回探索経路情報３５０を記憶する。図８は、本発明の第１の実施の形態における、検索毎の前回検索条件３４０、及び、前回探索経路情報３５０の例を示す図である。前回検索条件３４０は、前回の検索における検索条件の要素列を示す。また、前回探索経路情報３５０は、探索木３００において、前回検索条件３４０を探索する時に辿るノードの内、注目順位に対応するノードのノード識別子を示す。
【００２７】
探索開始ノード判定部１１０は、入力された検索条件３３０と前回検索条件３４０との要素列を比較し、探索木３００上での探索の始点である探索開始ノードを、前回探索経路情報３５０をもとに決定する。
【００２８】
検索部１２０は、探索木３００上で、探索開始ノードから探索を行い、入力された検索条件３３０に対する検索結果３８０を取得する。また、検索部１２０は、前回検索条件３４０と前回探索経路情報３５０とを更新する。
【００２９】
なお、検索装置１００はＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）とプログラムを記憶した記憶媒体を含み、プログラムに基づく制御によって動作するコンピュータであってもよい。また、探索木記憶部２１０、注目順位記憶部２２０、前回検索条件記憶部２４０、及び、前回探索経路記憶部２５０は、それぞれ個別の記憶媒体でも、１つの記憶媒体によって構成されてもよい。
【００３０】
次に、本発明の第１の実施の形態における検索装置１００の動作について説明する。
【００３１】
図３は、本発明の第１の実施の形態における、検索処理を示すフローチャートである。
【００３２】
はじめに、検索装置１００は、ユーザから、検索条件３３０の入力を受け付ける（ステップＳ１０１）。
【００３３】
次に、検索装置１００の探索開始ノード判定部１１０は、検索条件３３０と前回検索条件３４０との間で、注目順位情報３２０の注目順位より前の順位の各要素を比較し、注目順位より前の全順位の要素（注目順位より前の要素列）が一致するかどうかを判定する（ステップＳ１０２）。
【００３４】
ここで、探索開始ノード判定部１１０は、注目順位より前の要素列を、一括して比較し、上記判定を行う。この場合、例えば、探索開始ノード判定部１１０は、検索条件３３０と前回検索条件３４０との、注目順位より前の要素列を、所定のハッシュ関数によりハッシュ値に変換し、これらハッシュ値同士が一致するかどうかを判定する。なお、探索開始ノード判定部１１０は、注目順位より前の要素列を一括して比較し、上記判定ができれば、他の方法を用いて判定してもよい。
【００３５】
ステップＳ１０２において、一致すると判定された場合（ステップＳ１０２／Ｙｅｓ）、探索開始ノード判定部１１０は、注目順位を探索開始順位に設定する（ステップＳ１０３）。
【００３６】
次に、探索開始ノード判定部１１０は、前回探索経路情報３５０を基に、探索開始ノードを決定する。ここで、探索開始ノード判定部１１０は、前回探索経路情報３５０で示されるノード識別子を探索開始ノードに設定する（ステップＳ１０４）。なお、ステップＳ１０４において、前回探索経路情報３５０にノード識別子が設定されていない場合は、ステップＳ１１９で後述するように、前回検索条件３４０の検索において、注目順位より小さい（前の）順位までの探索で、検索結果３８０が「なし」であったことに相当するため、検索条件３３０に対しても、検索結果３８０に「なし」を設定し検索を終了する。
【００３７】
一方、ステップＳ１０２において、一致しないと判定された場合（ステップＳ１０２／Ｎｏ）、探索開始ノード判定部１１０は、順位「１」を探索開始順位に設定し（ステップＳ１０５）、根ノードの識別子を探索開始ノードに設定する（ステップＳ１０６）。なお、初期状態では、前回検索条件３４０、及び、前回探索経路情報３５０が設定されていないため、探索開始ノード判定部１１０は、根ノードの識別子を探索開始ノードに設定する。
【００３８】
次に、検索部１２０は、探索木情報３１０を参照し、探索木３００上の探索開始ノードから、検索条件３３０の要素列の探索を行う（ステップＳ１０７）。
【００３９】
図４は、本発明の第１の実施の形態における、探索処理（ステップＳ１０７）の詳細を示すフローチャートである。
【００４０】
はじめに、検索部１２０は、探索ノードに探索開始ノードを設定する（ステップＳ１１１）。
【００４１】
次に、検索部１２０は、探索木情報３１０を参照し、探索ノードが葉ノードであるかどうかを判定する（ステップＳ１１２）。
【００４２】
ステップＳ１１２において、探索ノードが葉ノードであれば（ステップＳ１１２／Ｙｅｓ）、検索部１２０は、探索木情報３１０における、探索ノードに対する検索対象を検索結果３８０に設定し（ステップＳ１１８）、処理を終了する。
【００４３】
一方、ステップＳ１１２において、探索ノードが葉ノードでなければ（ステップＳ１１２／Ｎｏ）、検索部１２０は、探索木情報３１０における、探索ノードに対する順位を、比較順位に設定する。そして、検索部１２０は、比較順位が注目順位と一致するかどうかを判定する（ステップＳ１１３）。
【００４４】
ステップＳ１１３において、比較順位が注目順位と一致する場合（ステップＳ１１３／Ｙｅｓ）、検索部１２０は、前回探索経路情報３５０のノード識別子を、探索ノードのノード識別子で更新する（ステップＳ１１４）。
【００４５】
次に、検索部１２０は、探索木情報３１０における、探索ノードに対する要素の内、検索条件３３０の要素列における比較順位の要素と一致する要素が存在するかどうかを判定する（ステップＳ１１５）。
【００４６】
ステップＳ１１５において、一致する要素が存在する場合（ステップＳ１１５／Ｙｅｓ）、検索部１２０は、探索木情報３１０における、当該要素に対する子ノード識別子を探索ノードに設定する（ステップＳ１１６）。そして、検索部１２０は、ステップＳ１１２からＳ１１９までの処理を、検索結果３８０が得られるまで、再帰的に繰り返す（ステップＳ１１７）。
【００４７】
また、ステップＳ１１５において、一致する要素が存在しない場合（ステップＳ１１５／Ｎｏ）、検索部１２０は、検索結果３８０に「なし」を設定し（ステップＳ１１９）、処理を終了する。なお、ステップＳ１１９において、比較順位が注目順位より小さい場合（ステップＳ１１４における前回探索経路情報３５０の更新が行われていない場合）、検索部１２０は、前回探索経路情報３５０の設定値を削除（初期化）する。
【００４８】
次に、検索部１２０は、検索条件３３０で、前回検索条件３４０を更新する（ステップＳ１０８）。
【００４９】
最後に、検索装置１００は、検索結果３８０を出力する（ステップＳ１０９）。
【００５０】
次に、初期状態からの連続する検索について、具体例を説明する。
【００５１】
ここで、図６の探索木情報３１０が設定されていると仮定する。また、注目順位情報３２０には、図７に示すように、注目順位「３」が設定されていると仮定する。さらに、初期状態では、図８の状態（ａ）に示すように、前回検索条件３４０、及び、前回探索経路情報３５０が設定されていないと仮定する。
【００５２】
１回目の検索の検索条件３３０として、要素列「ａａａ」が入力された場合、探索開始ノード判定部１１０は、根ノードのノード識別子「Ｎ１」を探索開始ノードに設定する。
【００５３】
検索部１２０は、探索開始ノードの識別子「Ｎ１」を探索ノード、順位「１」を比較順位に設定する。検索部１２０は、検索条件３３０の比較順位「１」の要素「ａ」と探索ノード「Ｎ１」の要素「ａ」が一致するため、当該要素に対する子ノード「Ｎ２１」を探索ノードに設定する。
【００５４】
検索部１２０は、順位「２」を比較順位に設定する。検索部１２０は、検索条件３３０の比較順位「２」の要素「ａ」と探索ノード「Ｎ２１」の要素と「ａ」が一致するため、当該要素に対する子ノード「Ｎ３１」を探索ノードに設定する。
【００５５】
検索部１２０は、順位「３」を比較順位に設定する。比較順位「３」は注目順位と一致するため、検索部１２０は、前回探索経路情報３５０のノード識別子に、図８の状態（ｂ）に示すように、探索ノードのノード識別子「Ｎ３１」を設定する。検索部１２０は、検索条件３３０の比較順位「３」の要素「ａ」と探索ノード「Ｎ３１」の要素「ａ」とが一致するため、当該要素に対する子ノード「Ｎ４１」を探索ノードに設定する。
【００５６】
探索ノード「Ｎ４１」は葉ノードであるため、検索部１２０は、探索ノード「Ｎ４１」の検索対象「ａａａ」を検索結果３８０に設定する。そして、検索部１２０は、図８の状態（ｂ）に示すように、前回検索条件３４０に検索条件３３０「ａａａ」を設定する。
【００５７】
次に、２回目の検索の検索条件３３０として、要素列「ａａｂ」が入力された場合、探索開始ノード判定部１１０は、検索条件３３０と図８の状態（ｂ）の前回検索条件３４０との間で、注目順位「３」より前の要素列を一括して比較する。ここで、注目順位「３」より前の要素列「ａａ」が一致するため、探索開始ノード判定部１１０は、図８の状態（ｂ）の前回探索経路情報３５０におけるノード識別子「Ｎ３１」を探索開始ノードに設定する。
【００５８】
検索部１２０は、探索開始ノードから、探索ノード「Ｎ３１」、「Ｎ４１」の順に、探索を行い、検索対象「ａａｂ」を検索結果３８０に設定する。ここで、検索部１２０は、図８の状態（ｃ）に示すように、前回検索条件３４０に検索条件３３０「ａａｂ」を設定し、前回探索経路情報３５０に、探索ノードのノード識別子「Ｎ３１」を設定する。
【００５９】
以上により、本発明の第１の実施の形態の動作が完了する。
【００６０】
次に、本発明の第１の実施の形態の特徴的な構成を説明する。図１は、本発明の第１の実施の形態の特徴的な構成を示すブロック図である。
【００６１】
検索装置１００は、探索開始ノード判定部１１０、検索部１２０、探索木記憶部２１０、前回検索条件記憶部２４０、及び、前回探索経路記憶部２５０を含む。
【００６２】
ここで、探索木記憶部２１０は、要素列である複数の検索対象を表し、ルートからの各階層に要素列の先頭からの各順位を対応付けた探索木３００を記憶する。
【００６３】
前回検索条件記憶部２４０は、前回の検索要素列である前回検索条件３４０を記憶する。
【００６４】
前回探索経路記憶部２５０は、探索木３００において前回検索条件３４０の要素列を探索する場合に辿るノードの内、注目順位に対応する階層のノードを示す前回探索経路情報３５０を記憶する。
【００６５】
探索開始ノード判定部１１０は、入力された検索条件３３０の要素列と前回検索条件３４０の要素列とで、注目順位より前の要素列を一括して比較し、一致する場合、前回探索経路情報３５０で示されるノードを探索開始ノードと決定する。
【００６６】
検索部１２０は、探索木３００上の探索開始ノードから、入力された検索条件３３０の注目順位以降の要素について探索を行うことにより、複数の検索対象から入力された検索条件３３０の要素列を検索する。
【００６７】
本発明の第１の実施の形態によれば、前回の検索条件と前方一致する検索条件の検索を探索木上の探索範囲を限定して行う場合に、検索をより高速化できる。その理由は、探索開始ノード判定部１１０が、入力された検索条件３３０の要素列と前回検索条件３４０の要素列とで、注目順位より前の要素列を一括して比較し、一致する場合、前回探索経路情報３５０で示されるノードを探索開始ノードと決定するためである。これにより、連続する検索条件の要素列間で、特定の順位までの要素列が前方一致することが多い場合、当該順位を注目順位に設定することにより、探索開始ノードの決定が効率化され、検索がより高速化される。
【００６８】
また、本発明の第１の実施の形態によれば、探索経路に関して記憶が必要な情報量を削減できる。その理由は、上述のように、探索開始ノード判定部１１０が、前回検索条件３４０の要素列を探索する場合に辿るノードの内、注目順位に対応する階層のノードを探索開始ノードと決定するためである。これにより、前回検索条件３４０の要素列を探索する場合に辿る全ノードではなく、少なくとも、探索開始ノードの決定に必要な注目順位に対応する階層のノードの情報を前回探索経路情報３５０に記憶することで、探索開始ノードを決定できる。
【００６９】
（第２の実施の形態）
次に、本発明の第２の実施の形態について説明する。
【００７０】
本発明の第２の実施においては、前回探索経路情報３５１に含まれる複数の注目順位のノードから、探索開始ノードを決定する点において、本発明の第１の実施の形態と異なる。なお、本発明の第２の実施において、本発明の第１の実施の形態と同一の符号を有する構成要素は、特に説明のない限り、本発明の第１の実施の形態と同様とする。
【００７１】
本発明の第２の実施において、注目順位記憶部２２０は、注目順位情報３２１を記憶する。図１０は、本発明の第２の実施の形態における、注目順位情報３２１の例を示す図である。注目順位情報３２１は、複数の注目順位を含む。
【００７２】
前回探索経路記憶部２５０は、前回探索経路情報３５１を記憶する。図１１は、本発明の第２の実施の形態における、検索毎の前回検索条件３４０、及び、前回探索経路情報３５１の例を示す図である。前回探索経路情報３５１は、前回検索条件３４０の検索で辿った探索木３００上のノードの内、複数の注目順位の各々に対応するノードのノード識別子を示す。
【００７３】
次に、本発明の第２の実施の形態における検索装置１００の動作について説明する。
【００７４】
図９は、本発明の第２の実施の形態における、検索装置１００の処理を示すフローチャートである。
【００７５】
はじめに、検索装置１００の探索開始ノード判定部１１０は、ユーザから、検索条件３３０の入力を受け付ける（ステップＳ２０１）。
【００７６】
次に、検索装置１００の探索開始ノード判定部１１０は、注目順位情報３２１に含まれる複数の注目順位の内の大きい（後方の）順位より順番に、検索条件３３０と前回検索条件３４０との、当該注目順位より前の順位の各要素を比較し、当該注目順位より前の要素列が一致するかどうかを判定する（ステップＳ２０２）。ここで、探索開始ノード判定部１１０は、複数の注目順位の各々について、当該注目順位より前の要素列を、一括して比較し、上記判定を行う。
【００７７】
なお、探索開始ノード判定部１１０は、注目順位情報３２１に含まれる複数の注目順位の内の小さい（前方の）順位より順番に上記判定を行う等、他の順番で上記判定を行ってもよい。
【００７８】
ステップＳ２０２において、いずれかの注目順位について、一致すると判定された場合（ステップＳ２０２／Ｙｅｓ）、探索開始ノード判定部１１０は、当該注目順位を探索開始順位に設定する（ステップＳ２０３）。
【００７９】
次に、探索開始ノード判定部１１０は、前回探索経路情報３５１を基に、探索開始ノードを決定する。ここで、探索開始ノード判定部１１０は、前回探索経路情報３５１における、探索開始順位に対応するノード識別子を探索開始ノードに設定する（ステップＳ２０４）。なお、ステップＳ２０４において、探索開始順位に対応するノード識別子が設定されていない場合は、ステップＳ１１９で後述するように、前回検索条件３４０の検索において、探索開始順位より小さい（前の）順位までの探索で、検索結果３８０が「なし」であったことに相当するため、検索条件３３０に対しても、検索結果３８０に「なし」を設定し検索を終了する。
【００８０】
一方、ステップＳ２０２において、全ての注目順位について、一致しないと判定された場合（ステップＳ２０２／Ｎｏ）、探索開始ノード判定部１１０は、順位「１」を探索開始順位に設定する（ステップＳ２０５）。そして、探索開始ノード判定部１１０は、根ノードを探索開始ノードと決定する（ステップＳ２０６）。
【００８１】
次に、検索部１２０は、探索木情報３１０を参照し、探索木３００上の探索開始ノードから、検索条件３３０の要素列の探索を行う（ステップＳ２０７）。
【００８２】
本発明の第２の実施の形態における探索処理は、前回探索経路情報３５１の更新（ステップＳ１１３、Ｓ１１４、及び、Ｓ１１９）を除いて、本発明の第１の実施の形態（図４）と同様となる。
【００８３】
本発明の第２の実施の形態の探索処理においては、ステップＳ１１３において、検索部１２０は、比較順位が注目順位情報３２１に含まれる複数の注目順位のいずれかと一致するかどうかを判定する。比較順位が複数の注目順位のいずれかと一致する場合、ステップＳ１１４において、検索部１２０は、前回探索経路情報３５１における比較順位に対応するノード識別子を、探索ノードのノード識別子で更新する。
【００８４】
また、ステップＳ１１９において、検索部１２０は、前回探索経路情報３５０の注目順位の内、比較順位より大きい（ステップＳ１１４における更新が行われていない）注目順位に対する設定値を削除（初期化）する。
【００８５】
次に、検索部１２０は、検索条件３３０で、前回検索条件３４０を更新する（ステップＳ２０８）。
【００８６】
最後に、検索部１２０は、検索結果３８０を出力する（ステップＳ２０９）。
【００８７】
次に、初期状態からの連続する検索について、具体例を説明する。
【００８８】
ここでは、図６の探索木情報３１０が設定されていると仮定する。また、注目順位情報３２１には、図１０に示すように、注目順位「２」「３」が設定されていると仮定する。さらに、初期状態では、図１１の状態（ａ）に示すように、前回検索条件３４０、及び、前回探索経路情報３５１が設定されていないと仮定する。
【００８９】
１回目の検索の検索条件３３０として、要素列「ａａａ」が入力された場合、探索開始ノード判定部１１０は、根ノードのノード識別子「Ｎ１」を探索開始ノードに設定する。検索部１２０は、探索ノード「Ｎ１」、「Ｎ２１」、「Ｎ３１」、「Ｎ４１」の順に、探索を行い、検索対象「ａａａ」を検索結果３８０に設定する。ここで、検索部１２０は、図１０の状態（ｂ）に示すように、検索条件３３０「ａａａ」を前回検索条件３４０に設定し、前回探索経路情報３５１の順位「２」「３」に対して、ノード識別子「Ｎ２１」「Ｎ３１」を設定する。
【００９０】
次に、２回目の検索の検索条件３３０として、要素列「ａｂｂ」が入力された場合、探索開始ノード判定部１１０は、検索条件３３０と図１１の状態（ｂ）の前回検索条件３４０との間で、注目順位「３」より前、及び、注目順位「２」より前の要素列を、それぞれ一括して比較する。ここで、注目順位「２」より前の要素列「ａ」が一致するため、探索開始ノード判定部１１０は、図１１の状態（ｂ）の前回探索経路情報３５１における、順位「２」に対するノード識別子「Ｎ２１」を探索開始ノードに設定する。
【００９１】
検索部１２０は、探索開始ノードから、探索ノード「Ｎ２１」、「Ｎ３２」、「Ｎ４４」の順に、探索を行い、検索対象「ａｂｂ」を検索結果３８０に設定する。そして、検索部１２０は、図１１の状態（ｃ）に示すように、検索条件３３０「ａｂｂ」を前回検索条件３４０に設定し、前回探索経路情報３５１の順位「２」「３」に対して、ノード識別子「Ｎ２１」「Ｎ３２」を設定する。
【００９２】
次に、３回目の検索の検索条件３３０として、要素列「ａｂａ」が入力された場合、探索開始ノード判定部１１０は、検索条件３３０と図１１の状態（ｃ）の前回検索条件３４０との間で、注目順位「３」より前、及び、注目順位「２」より前の要素列を、それぞれ一括して比較する。ここで、注目順位「３」より前の要素列「ａｂ」が一致するため、探索開始ノード判定部１１０は、図１１の状態（ｃ）の前回探索経路情報３５１における、順位「３」に対するノード識別子「Ｎ３２」を探索開始ノードに設定する。
【００９３】
検索部１２０は、探索開始ノードから、探索ノード「Ｎ３２」、「Ｎ４３」の順に、探索を行い、検索対象「ａｂａ」を検索結果３８０に設定する。そして、検索部１２０は、図１１の状態（ｄ）に示すように、検索条件３３０「ａｂａ」を前回検索条件３４０に設定し、前回探索経路情報３５１の順位「３」に対して、ノード識別子「Ｎ３２」を設定する。
【００９４】
以上により、本発明の第２の実施の形態の動作が完了する。
【００９５】
本発明の第２の実施の形態によれば、連続する検索条件の要素列間で、特定の複数の順位までの要素列が前方一致することが多い場合、第１の実施の形態に比べて、検索をさらに高速化できる。その理由は、探索開始ノード判定部１１０が、入力された検索条件３３０の要素列と前回検索条件３４０の要素列とで、複数の注目順位の各々より前の要素列を一括して比較し、複数の注目順位のいずれかより前の要素列が一致する場合、前回探索経路情報３５０で示される当該注目順位に対応するノードを探索開始ノードと決定するためである。これにより、前方一致する順位が小さい（前方の）場合、すなわち、探索範囲の限定の効果が小さいがその機会が多い場合と、前方一致する順位が大きい（後方の）場合、すなわち、探索範囲の限定の効果が大きいがその機会が少ない場合とが、混在する場合でも、どちらの場合についても探索開始ノードの決定が効率化され、検索がさらに高速化される。
【００９６】
（第３の実施の形態）
次に、本発明の第３の実施の形態について説明する。
【００９７】
本発明の第３の実施においては、連続する検索条件の間で、各順位における要素が不一致となった回数に応じて、注目順位を更新する点において、本発明の第１の実施の形態と異なる。なお、本発明の第３の実施において、本発明の第１の実施の形態と同一の符号を有する構成要素は、特に説明のない限り、本発明の第１の実施の形態と同様とする。
【００９８】
はじめに、本発明の第３の実施の形態の構成について説明する。図１２は、本発明の第３の実施の形態における、検索装置１００の構成を示すブロック図である。
【００９９】
図１２を参照すると、本発明の第３の実施の形態の検索装置１００は、第１の実施の形態の検索装置１００の構成要素に加えて、要素変化数更新部１３０、注目順位更新部１４０、及び、要素変化数記憶部２６０を含む。
【０１００】
ここで、要素変化数記憶部２６０は、要素変化数情報３６０を記憶する。図１４は、本発明の第３の実施の形態における、要素変化数情報３６０の例を示す図である。要素変化数情報３６０は、順位毎に、連続する検索条件間で、当該順位の要素が不一致となった回数を示す「変化数」を含む。
【０１０１】
要素変化数更新部１３０は、入力された検索条件３３０と前回の検索条件とをもとに、要素変化数情報３６０を更新する。
【０１０２】
注目順位更新部１４０は、要素変化数情報３６０をもとに、注目順位情報３２０を更新する。
【０１０３】
次に、本発明の第３の実施の形態における検索装置１００の動作について説明する。
【０１０４】
本発明の第３の実施の形態における検索処理は、本発明の第１の実施の形態（図３、図４）と同様となる。
【０１０５】
次に、本発明の第３の実施の形態における、注目順位更新処理について説明する。
【０１０６】
ここでは、図１４の要素変化数情報３６０が設定されていると仮定する。
【０１０７】
図１３は、本発明の第３の実施の形態における、注目順位更新処理を示すフローチャートである。注目順位更新処理は、検索処理（ステップＳ１０１からＳ１０９）に続いて実行される。
【０１０８】
はじめに、検索装置１００の要素変化数更新部１３０は、ステップＳ１０１で入力された検索条件３３０と図示しない記憶部に記憶された前回の検索条件とを比較し、検索条件３３０と前回の検索条件との間で、要素が不一致となる順位を検出する（ステップＳ３２１）。なお、要素変化数更新部１３０は、ステップＳ２０８で更新される前の前回検索条件３４０を取得し、入力された検索条件３３０と比較してもよい。
【０１０９】
例えば、前回の検索条件が「ａａａ」であり、入力された検索条件３３０が「ａｂｂ」である場合、要素変化数更新部１３０は、順位「２」「３」を検出する。
【０１１０】
要素変化数更新部１３０は、要素変化数情報３６０における、ステップＳ３２１で検出された順位に対する変化数を更新する（ステップＳ３２２）。
【０１１１】
例えば、要素変化数更新部１３０は、図１４の要素変化数情報３６０における、順位「２」「３」に対する変化数に１を加算し、それぞれ「９１」「１１」に更新する。
【０１１２】
次に、注目順位更新部１４０は、要素変化数情報３６０をもとに、注目順位情報３２０の注目順位を更新する（ステップＳ３２３）。ここで、注目順位更新部１４０は、要素変化数情報３６０において、変化数が他の順位に比べて大きい順位を、注目順位情報３２０の注目順位に設定する。
【０１１３】
例えば、注目順位更新部１４０は、変化数が最大の順位「２」を注目順位に設定する。
【０１１４】
ステップＳ３２３において注目順位が変更された場合（ステップＳ３２４／Ｙｅｓ）、注目順位更新部１４０は、前回検索条件３４０の設定値を削除（初期化）する（ステップＳ３２５）。また、注目順位更新部１４０は、前回探索経路情報３５０の設定値を削除（初期化）する（ステップＳ３２６）。これにより、注目順位が変更された後は、根ノードからの検索が行われる。
【０１１５】
以降、次の検索から、更新された注目順位で、検索処理（ステップＳ１０１からＳ１０９）が実行される。
【０１１６】
なお、本発明の第３の実施の形態においては、注目順位情報３２０の更新（ステップＳ３２３からＳ３２６）を検索処理のたびに実行するが、注目順位情報３２０の更新を、所定の検索回数等、検索回数に関する所定条件を満たした場合や、ユーザ等による指示に応答して実行してもよい。
【０１１７】
また、要素変化数情報３６０における変化数の初期化を、検索回数に関する所定条件を満たした場合や、ユーザ等による指示に応答して実行してもよい。
【０１１８】
また、本発明の第３の実施の形態における注目順位の更新を、本発明の第２の実施の形態に適用してもよい。この場合、変化数が他の順位に比べて大きい所定数の順位を、注目順位として設定してもよい。
【０１１９】
以上により、本発明の第３の実施の形態の動作が完了する。
【０１２０】
本発明の第３の実施の形態によれば、要素列が前方一致することが多い順位が予め特定できない場合でも、検索をより高速化できる。その理由は、要素変化数更新部１３０が、入力された検索条件３３０と前回の検索条件との間で各順位の要素を比較し、注目順位更新部１４０が、他の順位に比べて要素が不一致となった回数が多い順位を、注目順位に設定するためである。
【０１２１】
（第４の実施の形態）
次に、本発明の第４の実施の形態について説明する。
【０１２２】
本発明の第４の実施の形態においては、もとの検索対象の要素列を再整列順位で再整列した（並び変えた）検索対象に関する探索木３０１を用いて、検索処理を行う点において、本発明の第１の実施の形態と異なる。
【０１２３】
なお、本発明の第４の実施において、本発明の第１の実施の形態と同一の符号を有する構成要素は、特に説明のない限り、本発明の第１の実施の形態と同様とする。
【０１２４】
はじめに、本発明の第４の実施の形態の構成について説明する。図１５は、本発明の第４の実施の形態における、検索装置１００の構成を示すブロック図である。
【０１２５】
図１５を参照すると、本発明の第４の実施の形態の検索装置１００は、第１の実施の形態の検索装置１００の構成要素に加えて、要素変化数更新部１３０、探索木更新部１５０、検索条件再整列部１６０、検索結果再整列部１７０、要素変化数記憶部２６０、及び、再整列順位記憶部２７０を含む。ここで、要素変化数更新部１３０、及び、要素変化数記憶部２６０は、本発明の第３の実施の形態と同一である。
【０１２６】
再整列順位記憶部２７０は、再整列順位情報３７０を記憶する。図１８は、本発明の第４の実施の形態における、再整列順位情報３７０の例を示す図である。再整列順位情報３７０は、順位毎に、当該順位に対応する再整列後の順位を示す「再整列順位」を含む。
【０１２７】
探索木記憶部２１０は、再整列順位で再整列された検索対象（再整列検索対象）に関する探索木３０１の探索木情報３１１を記憶する。図２０は、本発明の第４の実施の形態における、探索木３０１の例を示す図である。図２０の探索木３０１は、図５の探索木３００における検索対象を、図１８の再整列順位情報３７０の再整列順位で再整列した場合の例である。図２１は、本発明の第４の実施の形態における、探索木情報３１１の例を示す図である。図２１の探索木情報３１１は、図２０の探索木３０１に対応する。
【０１２８】
なお、初期状態では、再整列順位情報３７０の再整列順位は、もとの順位と同じであり、探索木情報３１１には、再整列されていない検索対象に関する探索木の情報が設定されていると仮定する。
【０１２９】
探索木更新部１５０は、要素変化数情報３６０をもとに、再整列順位情報３７０、及び、探索木情報３１１を更新する。
【０１３０】
検索条件再整列部１６０は、入力された検索条件３３０の要素列を、再整列順位で再整列して、検索条件３３１に変換する。
【０１３１】
探索開始ノード判定部１１０は、検索条件３３１と前回検索条件３４０との要素列を比較し、探索木３０１上での探索の始点である探索開始ノードを、前回探索経路情報３５０をもとに決定する。
【０１３２】
検索部１２０は、探索木３０１上で、探索開始ノードから探索を行い、検索条件３３１に対する検索結果３８１を取得する。また、検索部１２０は、前回検索条件３４０と前回探索経路情報３５０とを更新する。
【０１３３】
なお、注目順位情報３２０の注目順位は、再整列順位を用いて設定される。また、前回検索条件３４０には、再整列された検索条件３３１が設定される。
【０１３４】
検索結果再整列部１７０は、探索木３０１上での検索結果３８１の要素列を、もとの順位で再整列して、検索結果３８０に変換する。
【０１３５】
次に、本発明の第４の実施の形態における検索装置１００の動作について説明する。
【０１３６】
はじめに、本発明の第４の実施の形態における、検索処理について説明する。
【０１３７】
図１６は、本発明の第４の実施の形態における、検索処理を示すフローチャートである。
【０１３８】
ここでは、探索木更新部１５０により、図２１の探索木情報３１１、及び、図１８の再整列順位情報３７０が設定されていると仮定する。
【０１３９】
はじめに、検索装置１００は、ユーザから、検索条件３３０の入力を受け付ける（ステップＳ４０１）。
【０１４０】
次に、検索装置１００の検索条件再整列部１６０は、検索条件３３０の要素列を再整列順位で再整列して、検索条件３３１に変換する（ステップＳ４０２）。
【０１４１】
例えば、検索条件３３０として、要素列「ａｂｂ」が入力された場合、検索条件再整列部１６０は、検索条件３３０「ａｂｂ」を図１８の再整列順位情報３７０における再整列順位で再整列し、検索条件３３１「ｂａｂ」に変換する。
【０１４２】
次に、探索開始ノード判定部１１０と検索部１２０は、本発明の第１の実施の形態におけるステップＳ１０２からＳ１０８と同様に、探索開始ノードを決定し、探索木３０１上の探索開始ノードから探索を行う。検索部１２０は、検索条件３３１に対する検索結果３８１を取得する（ステップＳ４０３）。
【０１４３】
例えば、検索部１２０は、図２１の探索木情報３１１を用いて探索を行い、検索条件３３１「ｂａｂ」に対する検索対象「ｂａｂ」を検索結果３８１に設定する。
【０１４４】
次に、検索結果再整列部１７０は、検索結果３８１の要素列を、もとの順序で再整列して、検索結果３８１に変換する。（ステップＳ４０４）。
【０１４５】
例えば、検索結果再整列部１７０は、検索結果３８１「ｂａｂ」を、もとの順位で再整列した検索結果３８０「ａｂｂ」を取得する。
【０１４６】
最後に、検索装置１００は、検索結果３８０を出力する（ステップＳ４０５）。
【０１４７】
次に、本発明の第４の実施の形態における、探索木更新処理について説明する。
【０１４８】
図１７は、本発明の第４の実施の形態における、探索木更新処理を示すフローチャートである。探索木更新処理は、検索処理（ステップＳ４０１からＳ４０５）に続いて実行される。
【０１４９】
はじめに、検索装置１００の要素変化数更新部１３０は、本発明の第３の実施の形態と同様に、ステップＳ４０１で入力された検索条件３３０と前回の検索条件とを比較し、要素が不一致となる順位を検出する（ステップＳ４２１）。そして、要素変化数更新部１３０は、要素変化数情報３６０における、ステップＳ４２１で検出された順位に対する変化数を更新する（ステップＳ４２２）。
【０１５０】
探索木更新部１５０は、要素変化数情報３６０をもとに、再整列順位情報３７０の再整列順位を更新する（ステップＳ４２３）。ここで、探索木更新部１５０は、要素変化数情報３６０における各順位に対する変化数の昇順に順番を付与し、各順位に付与した順番を、再整列順位情報３７０における、当該順位に対する再整列順位に設定する。
【０１５１】
例えば、探索木更新部１５０は、図１４の要素変化数情報３６０に対して、図１８の再整列順位情報３７０を設定する。
【０１５２】
ステップＳ４２３において再整列順位が変更された場合（ステップＳ４２４／Ｙｅｓ）、探索木更新部１５０は、再整列順位をもとに、探索木情報３１１を更新する（ステップＳ４２５）。
【０１５３】
ここで、探索木更新部１５０は、図示しない記憶部に記憶されている、もとの検索対象の各々の要素列を再整列順位で整列し、再整列検索対象を取得する。そして、探索木更新部１５０は、再整列検索対象について探索木情報３１１を設定する。
【０１５４】
図１９は、本発明の第４の実施の形態における、検索対象の再整列の例を示す図である。例えば、探索木更新部１５０は、図１８の再整列順位情報３７０に従って、図１９に示すように、もとの検索対象から再整列検索対象を取得する。さらに、探索木更新部１５０は、図１９の再整列検索対象に対して、図２１の探索木情報３１１を生成する。
【０１５５】
次に、探索木更新部１５０は、前回検索条件３４０の設定値を削除（初期化）する（ステップＳ４２６）。また、探索木更新部１５０は、前回探索経路情報３５０の設定値を削除（初期化）する（ステップＳ４２７）。これにより、再整列順位の変更に伴い探索木３０１が変更された後は、根ノードからの検索が行われる。
【０１５６】
以降、次の検索から、更新された探索木３０１を用いて、検索処理（ステップＳ４０１からＳ４０５）が実行される。
【０１５７】
なお、本発明の第４の実施の形態においては、再整列順位情報３７０の更新以降の処理（ステップＳ４２３からＳ４２７）を検索処理のたびに実行するが、再整列順位情報３７０の更新を、所定の検索回数等、検索回数に関する所定条件を満たした場合や、ユーザ等による指示に応答して実行してもよい。
【０１５８】
また、要素変化数情報３６０における変化数の初期化を、検索回数関する所定条件を満たした場合や、ユーザ等による指示に応答して実行してもよい。
【０１５９】
また、本発明の第４の実施の形態における探索木３０１の更新を、本発明の第２の実施の形態に適用してもよい。
【０１６０】
以上により、本発明の第４の実施の形態の動作が完了する。
【０１６１】
本発明の第４の実施の形態によれば、第１の実施の形態に比べて、検索をさらに高速化できる。その理由は、探索木更新部１５０が、入力された検索条件３３０と前回の検索条件との間で各順位の要素を比較し、各順位に要素が不一致となった回数の順番を示す再整列順位を付与し、検索対象の要素列の各順位を当該再整列順位に従って並び変え、当該並び変えられた検索対象に対して探索木を生成するためである。これにより、連続する検索条件の要素列間で、注目順位までの要素列が前方一致する機会が増えるため、検索がさらに高速化される。また、注目順位をより大きく（後方に）設定することにより、探索範囲をさらに限定できるため、検索がさらに高速化される。
【０１６２】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【０１６３】
例えば、検索対象の要素列が、任意の要素を示すワイルドカード要素を含み、探索木３００上のノードにおける子ノードリンク情報が、ワイルドカード要素を含んでいてもよい。この場合、ワイルドカード要素に対する子ノードへのリンクは必ず探索されるため、複数の経路で探索が行われる。そして、前回探索経路情報３５０には、複数の経路の各々における注目順位に対応するノードが設定される。入力された検索条件３３０と前回検索条件３４０とで、注目順位までの要素列が一致した場合、前回探索経路情報３５０の各ノードを探索開始ノードとして、探索が行われる。
【０１６４】
この出願は、２０１２年１月１８日に出願された日本出願特願２０１２−００７８５７を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【０１６５】
１００    検索装置
１１０    探索開始ノード判定部
１２０    検索部
１３０    要素変化数更新部
１４０    注目順位更新部
１５０    探索木更新部
１６０    検索条件再整列部
１７０    検索結果再整列部
２１０    探索木記憶部
２２０    注目順位記憶部
２４０    前回検索条件記憶部
２５０    前回探索経路記憶部
２６０    要素変化数記憶部
２７０    再整列順位記憶部
３００    探索木
３０１    探索木
３１０    探索木情報
３１１    探索木情報
３２０    注目順位情報
３２１    注目順位情報
３３０    検索条件
３３１    検索条件
３４０    前回検索条件
３５０    前回探索経路情報
３５１    前回探索経路情報
３６０    要素変化数情報
３７０    再整列順位情報
３８０    検索結果
３８１    検索結果
【図１】
2013108333.tif 000003
【図２】
2013108333.tif 000004
【図３】
2013108333.tif 000005
【図４】
2013108333.tif 000006
【図５】
2013108333.tif 000007
【図６】
2013108333.tif 000008
【図７】
2013108333.tif 000009
【図８】
2013108333.tif 000010
【図９】
2013108333.tif 000011
【図１０】
2013108333.tif 000012
【図１１】
2013108333.tif 000013
【図１２】
2013108333.tif 000014
【図１３】
2013108333.tif 000015
【図１４】
2013108333.tif 000016
【図１５】
2013108333.tif 000017
【図１６】
2013108333.tif 000018
【図１７】
2013108333.tif 000019
【図１８】
2013108333.tif 000020
【図１９】
2013108333.tif 000021
【図２０】
2013108333.tif 000022
【図２１】
2013108333.tif 000023
【図２２】
2013108333.tif 000024
【手続補正書】
【提出日】平成26年7月17日(2014.7.17)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項８
【補正方法】変更
【補正の内容】
【請求項８】
コンピュータに、
要素列である複数の検索対象を表し、ルートからの各階層に要素列の先頭からの各順位を対応付けた探索木を記憶し、
前回の検索要素列を記憶し、
前記探索木において前記前回の検索要素列を探索する場合に辿るノードの内、注目順位に対応する階層のノードを示す前回探索経路情報を記憶し、
入力された検索要素列と前記前回の検索要素列との間で、前記注目順位より前の要素列を一括して比較し、一致する場合、前記前回探索経路情報で示されるノードを探索開始ノードと決定し、
前記探索木上の前記探索開始ノードから、前記入力された検索要素列の前記注目順位以降の要素について探索を行うことにより、前記複数の検索対象から前記入力された検索要素列を検索する、処理を実行させる検索プログラム。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項９
【補正方法】変更
【補正の内容】
【請求項９】
前記前回探索経路情報は、前記探索木において前記前回の検索要素列を探索する場合に辿るノードの内、複数の前記注目順位の各々に対応する階層のノードを示し、
前記探索開始ノードを決定する場合、入力された検索要素列と前記前回の検索要素列との間で、前記複数の注目順位のいずれかより前の要素列が一致する場合、前記前回探索経路情報で示される当該注目順位に対応するノードを、前記探索開始ノードと決定する処理を実行させる請求項８に記載の検索プログラム。
【手続補正３】
【補正対象書類名】特許請求の範囲
【補正対象項目名】請求項１０
【補正方法】変更
【補正の内容】
【請求項１０】
さらに、前記入力された検索要素列と前記前回の検索要素列との間で各順位の要素を比較し、他の順位に比べて要素が不一致となった回数が多い順位を、前記注目順位に設定する処理を実行させる請求項８または９に記載の検索プログラム。
【国際調査報告】
2013108333.tif 000025
2013108333.tif 000026