(57)【要約】【課題】検索対象となる文字列情報を記憶するメモリ容量の増大を抑止することができる検索情報作成装置、検索情報作成方法及びプログラムを提供する。【解決手段】検索対象となる検索語の読みの文字列を、前記検索語の読みとして利用可能な全文字種類をそれぞれ識別する全文字コードの順列にて表した第１順列部から構成された第１格納情報を作成する第１格納情報作成手段と、前記文字列を構成する文字種類を表したインデックス部と、該文字列を前記インデックス部における文字種類をそれぞれ識別する識別ビットコードの順列にて表した第２順列部とから構成された第２格納情報を作成する第２格納情報作成手段と、前記第１格納情報のデータサイズと前記第２格納情報のデータサイズとのうち、小さいデータサイズの方を前記検索語の読みの文字列として記憶する検索情報記憶手段と、を備える。【選択図】図１
2012215955.tif 000002
【特許請求の範囲】
【請求項１】
検索対象となる検索語の読みの文字列を取得する文字列取得手段と、
前記文字列を、前記検索語の読みとして利用可能な全文字種類をそれぞれ識別する全文字コードの順列にて表した第１順列部から構成された第１格納情報を作成する第１格納情報作成手段と、
前記文字列を構成する文字種類を表したインデックス部と、該文字列を前記インデックス部における文字種類をそれぞれ識別する識別ビットコードの順列にて表した第２順列部とから構成された第２格納情報を作成する第２格納情報作成手段と、
前記第１格納情報のデータサイズが前記第２格納情報のデータサイズ以下の場合には、前記検索語の読みの文字列として前記第１格納情報を記憶し、
前記第１格納情報のデータサイズが前記第２格納情報のデータサイズよりも大きい場合には、前記検索語の読みの文字列として前記第２格納情報を記憶する検索情報記憶手段と、
を備えたことを特徴とする検索情報作成装置。
【請求項２】
前記第２格納情報作成手段は、
前記文字列を構成する文字種類の種類数に対応し、該文字列を構成する各文字種類をそれぞれ識別する部分文字コードで表した文字インデックス部を作成する文字インデックス部作成手段と、
前記検索語の読みとして利用可能な全文字種類に対応するビット配列を有し、前記ビット配列の各ビットのうち、前記文字列を構成する各文字種類に対応するビットをＯＮに設定し、それ以外のビットをＯＦＦに設定したビットインデックス部を作成するビットインデックス部作成手段と、
を有し、
該第２格納情報作成手段は、
前記文字インデックス部のデータサイズが前記ビットインデックス部のデータサイズ以下の場合には、該文字インデックス部を前記インデックス部として設定し、
前記文字インデックス部のデータサイズが前記ビットインデックス部のデータサイズよりも大きい場合には、該ビットインデックス部を前記インデックス部として設定することを特徴とする請求項１に記載の検索情報作成装置。
【請求項３】
前記第２格納情報作成手段は、前記文字列を構成する文字種類の種類数に対応し、該文字列を構成する各文字種類をそれぞれ識別する部分文字コードで表した文字インデックス部を作成する文字インデックス部作成手段を有し、
該第２格納情報作成手段は、前記文字インデックス部を、前記インデックス部として設定することを特徴とする請求項１に記載の検索情報作成装置。
【請求項４】
前記第２格納情報作成手段は、前記検索語の読みとして利用可能な全文字種類に対応するビット配列を有し、前記ビット配列の各ビットのうち、前記文字列を構成する各文字種類に対応するビットをＯＮに設定し、それ以外のビットをＯＦＦに設定したビットインデックス部を作成するビットインデックス部作成手段を有し、
該第２格納情報作成手段は、前記ビットインデックス部を前記インデックス部として設定することを特徴とする請求項１に記載の検索情報作成装置。
【請求項５】
複数の検索語のそれぞれの前記第２格納情報を構成する各インデックス部のうち、複数の検索語において共通するインデックス部を抽出して格納した共有インデックスデータを記憶する共有インデックス記憶手段を備え、
前記検索情報記憶手段は、前記共通するインデックス部を有する前記第２格納情報については、当該共通するインデックス部に替えて、前記共有インデックスデータにおける該共通するインデックス部を示すインデックスコードを記憶することを特徴とする請求項１乃至請求項４のいずれかに記載の検索情報作成装置。
【請求項６】
複数の検索語のそれぞれの前記第２格納情報を構成する各インデックス部のうち、複数の検索語において共通するインデックス部を抽出して格納した共有インデックスデータを作成する共有インデックスデータ作成手段と、
前記共有インデックスデータに格納されている複数のインデックス部のうち、一方のインデックス部の文字種類の全てが他方のインデックス部の文字種類に含まれる包含関係にあるインデックス部が存在するか否かを判定する包含関係判定手段と、
一方のインデックス部の文字種類の全てが他方のインデックス部の文字種類に含まれる包含関係にあるインデックス部が存在すると判定された場合には、当該他方のインデックス部を抽出して統合インデックス部として格納した統合インデックスデータを記憶する統合インデックス部記憶手段と、を備え、
前記検索情報記憶手段は、インデックス部の文字種類の全てが、前記統合インデックスデータに格納されている前記統合インデックス部の文字種類に含まれる包含関係にある前記第２格納情報については、当該インデックス部に替えて、前記統合インデックスデータにおける当該統合インデックス部を示すインデックスコードを記憶すると共に、前記第２順列部に替えて、前記文字列を当該統合インデックス部における文字種類をそれぞれ識別する識別ビットコードの順列にて表した第３順列部を記憶することを特徴とする請求項１乃至請求項４のいずれかに記載の検索情報作成装置。
【請求項７】
前記検索情報記憶手段は、前記検索語の文字列を含む候補施設名に関する検索補助情報を前記第１格納情報又は前記第２格納情報に関連付けて記憶することを特徴とする請求項１乃至請求項６のいずれかに記載の検索情報作成装置。
【請求項８】
検索対象となる検索語の読みの文字列を取得する文字列取得工程と、
前記文字列取得工程で取得した文字列を、前記検索語の読みとして利用可能な全文字種類をそれぞれ識別する全文字コードの順列にて表した第１順列部から構成された第１格納情報を作成する第１格納情報作成工程と、
前記文字列取得工程で取得した文字列を構成する文字種類を表したインデックス部と、該文字列を前記インデックス部における文字種類をそれぞれ識別する識別ビットコードの順列にて表した第２順列部とから構成された第２格納情報を作成する第２格納情報作成工程と、
前記第１格納情報作成工程で作成した第１格納情報のデータサイズが、前記第２格納情報作成工程で作成した第２格納情報のデータサイズ以下の場合には、前記検索語の読みの文字列として前記第１格納情報を記憶し、
前記第１格納情報作成工程で作成した第１格納情報のデータサイズが、前記第２格納情報作成工程で作成した第２格納情報のデータサイズよりも大きい場合には、前記検索語の読みの文字列として前記第２格納情報を記憶する検索情報記憶工程と、
を備えたことを特徴とする検索情報作成方法。
【請求項９】
コンピュータに、
検索対象となる検索語の読みの文字列を取得する文字列取得工程と、
前記文字列取得工程で取得した文字列を、前記検索語の読みとして利用可能な全文字種類をそれぞれ識別する全文字コードの順列にて表した第１順列部から構成された第１格納情報を作成する第１格納情報作成工程と、
前記文字列取得工程で取得した文字列を構成する文字種類を表したインデックス部と、該文字列を前記インデックス部における文字種類をそれぞれ識別する識別ビットコードの順列にて表した第２順列部とから構成された第２格納情報を作成する第２格納情報作成工程と、
前記第１格納情報作成工程で作成した第１格納情報のデータサイズが、前記第２格納情報作成工程で作成した第２格納情報のデータサイズ以下の場合には、前記検索語の読みの文字列として前記第１格納情報を記憶し、
前記第１格納情報作成工程で作成した第１格納情報のデータサイズが、前記第２格納情報作成工程で作成した第２格納情報のデータサイズよりも大きい場合には、前記検索語の読みの文字列として前記第２格納情報を記憶する検索情報記憶工程と、
を実行させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、入力された検索語に基づいて施設名を検索するために使用する検索情報を作成する検索情報作成装置、検索情報作成方法及びプログラムに関するものである。
【背景技術】
【０００２】
従来より、入力された検索語に基づいて施設情報等を検索する技術に関し種々提案されている。
例えば、５０音入力画面において、検索対象の読みを先頭文字から５０音で入力すると、各文字を入力する毎に、ＣＤに収録されている地図情報から前方一致する登録地点の名称が全数検索されて、検索対象の件数が表示される。また、同時に、この全数検索された登録地点の名称から次に選択して入力可能な文字が抽出され、この５０音入力画面において次に選択して入力可能な５０音入力キーが識別可能に表示される車両用ナビゲーション装置がある（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平１０−９６６４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
前記した特許文献１に記載された車両用ナビゲーション装置では、登録地点の名称が増大した場合には、登録地点の名称をＣＤから全て読み出してメモリ上に展開し、入力された検索語と前方一致する登録地点の名称を全数検索することによって、検索対象の件数を迅速に表示することが考えられる。
しかしながら、登録地点の名称等の文字列を、検索語として利用可能な全文字種類をそれぞれ識別する文字コード（例えば、５０音全てを識別可能な文字コードである。）等でメモリに記憶した場合には、一文字一文字を表現するために必要なデータサイズが大きくなってしまうため、検索対象として十分な個数の登録地点の名称等の文字列情報を記憶するためには、必要なメモリ容量が増大するという問題がある。
【０００５】
そこで、本発明は、上述した問題点を解決するためになされたものであり、検索対象となる文字列情報を記憶するメモリ容量の増大を抑止することができる検索情報作成装置、検索情報作成方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
前記目的を達成するため請求項１に係る検索情報作成装置は、検索対象となる検索語の読みの文字列を取得する文字列取得手段と、前記文字列を、前記検索語の読みとして利用可能な全文字種類をそれぞれ識別する全文字コードの順列にて表した第１順列部から構成された第１格納情報を作成する第１格納情報作成手段と、前記文字列を構成する文字種類を表したインデックス部と、該文字列を前記インデックス部における文字種類をそれぞれ識別する識別ビットコードの順列にて表した第２順列部とから構成された第２格納情報を作成する第２格納情報作成手段と、前記第１格納情報のデータサイズが前記第２格納情報のデータサイズ以下の場合には、前記検索語の読みの文字列として前記第１格納情報を記憶し、前記第１格納情報のデータサイズが前記第２格納情報のデータサイズよりも大きい場合には、前記検索語の読みの文字列として前記第２格納情報を記憶する検索情報記憶手段と、を備えたことを特徴とする。
【０００７】
また、請求項２に係る検索情報作成装置は、請求項１に記載の検索情報作成装置において、前記第２格納情報作成手段は、前記文字列を構成する文字種類の種類数に対応し、該文字列を構成する各文字種類をそれぞれ識別する部分文字コードで表した文字インデックス部を作成する文字インデックス部作成手段と、前記検索語の読みとして利用可能な全文字種類に対応するビット配列を有し、前記ビット配列の各ビットのうち、前記文字列を構成する各文字種類に対応するビットをＯＮに設定し、それ以外のビットをＯＦＦに設定したビットインデックス部を作成するビットインデックス部作成手段と、を有し、該第２格納情報作成手段は、前記文字インデックス部のデータサイズが前記ビットインデックス部のデータサイズ以下の場合には、該文字インデックス部を前記インデックス部として設定し、前記文字インデックス部のデータサイズが前記ビットインデックス部のデータサイズよりも大きい場合には、該ビットインデックス部を前記インデックス部として設定することを特徴とする。
【０００８】
また、請求項３に係る検索情報作成装置は、請求項１に記載の検索情報作成装置において、前記第２格納情報作成手段は、前記文字列を構成する文字種類の種類数に対応し、該文字列を構成する各文字種類をそれぞれ識別する部分文字コードで表した文字インデックス部を作成する文字インデックス部作成手段を有し、該第２格納情報作成手段は、前記文字インデックス部を、前記インデックス部として設定することを特徴とする。
【０００９】
また、請求項４に係る検索情報作成装置は、請求項１に記載の検索情報作成装置において、前記第２格納情報作成手段は、前記検索語の読みとして利用可能な全文字種類に対応するビット配列を有し、前記ビット配列の各ビットのうち、前記文字列を構成する各文字種類に対応するビットをＯＮに設定し、それ以外のビットをＯＦＦに設定したビットインデックス部を作成するビットインデックス部作成手段を有し、該第２格納情報作成手段は、前記ビットインデックス部を前記インデックス部として設定することを特徴とする。
【００１０】
また、請求項５に係る検索情報作成装置は、請求項１乃至請求項４のいずれかに記載の検索情報作成装置において、複数の検索語のそれぞれの前記第２格納情報を構成する各インデックス部のうち、複数の検索語において共通するインデックス部を抽出して格納した共有インデックスデータを記憶する共有インデックス記憶手段を備え、前記検索情報記憶手段は、前記共通するインデックス部を有する前記第２格納情報については、当該共通するインデックス部に替えて、前記共有インデックスデータにおける該共通するインデックス部を示すインデックスコードを記憶することを特徴とする。
【００１１】
また、請求項６に係る検索情報作成装置は、請求項１乃至請求項４のいずれかに記載の検索情報作成装置において、複数の検索語のそれぞれの前記第２格納情報を構成する各インデックス部のうち、複数の検索語において共通するインデックス部を抽出して格納した共有インデックスデータを作成する共有インデックスデータ作成手段と、前記共有インデックスデータに格納されている複数のインデックス部のうち、一方のインデックス部の文字種類の全てが他方のインデックス部の文字種類に含まれる包含関係にあるインデックス部が存在するか否かを判定する包含関係判定手段と、一方のインデックス部の文字種類の全てが他方のインデックス部の文字種類に含まれる包含関係にあるインデックス部が存在すると判定された場合には、当該他方のインデックス部を抽出して統合インデックス部として格納した統合インデックスデータを記憶する統合インデックス部記憶手段と、を備え、前記検索情報記憶手段は、インデックス部の文字種類の全てが、前記統合インデックスデータに格納されている前記統合インデックス部の文字種類に含まれる包含関係にある前記第２格納情報については、当該インデックス部に替えて、前記統合インデックスデータにおける当該統合インデックス部を示すインデックスコードを記憶すると共に、前記第２順列部に替えて、前記文字列を当該統合インデックス部における文字種類をそれぞれ識別する識別ビットコードの順列にて表した第３順列部を記憶することを特徴とする。
【００１２】
更に、請求項７に係る検索情報作成装置は、請求項１乃至請求項６のいずれかに記載の検索情報作成装置において、前記検索情報記憶手段は、前記検索語の文字列を含む候補施設名に関する検索補助情報を前記第１格納情報又は前記第２格納情報に関連付けて記憶することを特徴とする。
【００１３】
また、請求項８に係る検索情報作成方法は、検索対象となる検索語の読みの文字列を取得する文字列取得工程と、前記文字列取得工程で取得した文字列を、前記検索語の読みとして利用可能な全文字種類をそれぞれ識別する全文字コードの順列にて表した第１順列部から構成された第１格納情報を作成する第１格納情報作成工程と、前記文字列取得工程で取得した文字列を構成する文字種類を表したインデックス部と、該文字列を前記インデックス部における文字種類をそれぞれ識別する識別ビットコードの順列にて表した第２順列部とから構成された第２格納情報を作成する第２格納情報作成工程と、前記第１格納情報作成工程で作成した第１格納情報のデータサイズが、前記第２格納情報作成工程で作成した第２格納情報のデータサイズ以下の場合には、前記検索語の読みの文字列として前記第１格納情報を記憶し、前記第１格納情報作成工程で作成した第１格納情報のデータサイズが、前記第２格納情報作成工程で作成した第２格納情報のデータサイズよりも大きい場合には、前記検索語の読みの文字列として前記第２格納情報を記憶する検索情報記憶工程と、を備えたことを特徴とする。
【００１４】
更に、請求項９に係るプログラムは、コンピュータに、検索対象となる検索語の読みの文字列を取得する文字列取得工程と、前記文字列取得工程で取得した文字列を、前記検索語の読みとして利用可能な全文字種類をそれぞれ識別する全文字コードの順列にて表した第１順列部から構成された第１格納情報を作成する第１格納情報作成工程と、前記文字列取得工程で取得した文字列を構成する文字種類を表したインデックス部と、該文字列を前記インデックス部における文字種類をそれぞれ識別する識別ビットコードの順列にて表した第２順列部とから構成された第２格納情報を作成する第２格納情報作成工程と、前記第１格納情報作成工程で作成した第１格納情報のデータサイズが、前記第２格納情報作成工程で作成した第２格納情報のデータサイズ以下の場合には、前記検索語の読みの文字列として前記第１格納情報を記憶し、前記第１格納情報作成工程で作成した第１格納情報のデータサイズが、前記第２格納情報作成工程で作成した第２格納情報のデータサイズよりも大きい場合には、前記検索語の読みの文字列として前記第２格納情報を記憶する検索情報記憶工程と、を実行させるためのプログラムである。
【発明の効果】
【００１５】
請求項１に係る検索情報作成装置、請求項８に係る検索情報作成方法及び請求項９に係るプログラムでは、検索対象となる検索語の読みの文字列を全文字コードの順列にて表した第１格納情報と、該文字列の各文字をインデックス部における文字種類をそれぞれ識別する識別ビットコードの順列にて表した第２格納情報とのそれぞれのデータサイズを比較して、データサイズ少ない方を検索語の読みの文字列として記憶する。
【００１６】
これにより、検索対象となる検索語の読みの文字列を全文字コードの順列にて表して作成した第１格納情報の格納形式だけでなく、第１格納情報の格納形式よりもデータサイズが少なくなる第２格納情報の格納形式で検索語の読みの文字列を記憶することが可能となり、検索対象となる検索語の文字列を記憶する検索情報記憶手段のメモリ容量の増大を抑止することが可能となる。
【００１７】
また、請求項２に係る検索情報作成装置では、文字インデックス部のデータサイズが、ビットインデックス部のデータサイズ以下の場合には、該文字インデックス部を第２格納情報のインデックス部として設定するため、インデックス部を迅速に作成することができる。また、文字インデックス部のデータサイズが、ビットインデックス部のデータサイズよりも大きい場合には、該ビットインデックス部をインデックス部として設定するため、インデックス部のデータサイズを、検索語の読みとして利用可能な全文字種類に対応するビット配列のデータサイズに固定することが可能となり（例えば、５０音の場合には、ビット配列のデータサイズを６バイトに固定することができる。）、第２格納情報のデータサイズの増加を効果的に抑制することが可能となる。
【００１８】
また、請求項３に係る検索情報作成装置では、文字列を構成する各文字種類を文字コードで表した文字インデックス部を第２格納情報のインデックス部として設定するため、第２格納情報のインデックス部を迅速に作成することができる。
【００１９】
また、請求項４に係る検索情報作成装置では、検索語の読みとして利用可能な全文字種類に対応するビット配列の各ビットのうち、文字列を構成する各文字種類に対応するビットをＯＮに設定し、それ以外のビットをＯＦＦに設定したビットインデックス部をインデックス部として設定する。これにより、インデックス部のデータサイズを、検索語の読みとして利用可能な全文字種類に対応するビット配列のデータサイズに固定することが可能となり（例えば、５０音の場合には、ビット配列のデータサイズを６バイトに固定することができる。）、第２格納情報のデータサイズの増加を効果的に抑制することが可能となる。
【００２０】
また、請求項５に係る検索情報作成装置では、共通するインデックス部を有する第２格納情報については、当該共通するインデックス部に替えて、共有インデックスデータにおける該共通するインデックス部を示すインデックスコードを記憶することによって、該第２格納情報のデータサイズの更なる削減化を図ることができ、検索情報記憶手段のメモリ容量の増大を更に抑止することが可能となる。
【００２１】
また、請求項６に係る検索情報作成装置では、インデックス部の文字種類の全てが、統合インデックスデータに格納されている統合インデックス部の文字種類に含まれる包含関係にある第２格納情報については、インデックス部に替えて、統合インデックスデータにおける当該統合インデックス部を示すインデックスコードを記憶することによって、第２格納情報のデータサイズの更なる削減化を図ることができ、検索情報記憶手段のメモリ容量の増大を更に抑止することが可能となる。また、インデックス部の文字種類の全てが統合インデックス部の文字種類に含まれる包含関係にある第２格納情報については、第２順列部に替えて、検索語の読みの文字列を当該統合インデックス部における文字種類をそれぞれ識別する識別ビットコードの順列にて表した第３順列部を記憶することによって、第２格納情報のデータサイズの増加を防止することができ、検索情報記憶手段のメモリ容量の増大を確実に抑止することが可能となる。
【００２２】
更に、請求項７に係る検索情報作成装置では、検索語の文字列を含む候補施設名に関する検索補助情報を第１格納情報又は第２格納情報に関連付けて記憶するため、入力された検索語と前方一致する候補施設名に関する検索補助情報を迅速に検索することが可能となる。
【図面の簡単な説明】
【００２３】
【図１】本実施例に係る情報作成装置を示したブロック図である。
【図２】施設名ＤＢに格納された施設名データテーブルの一例を示す図である。
【図３】検索対象となる検索語の文字列と候補施設名に関する検索補助情報を関連付けて記憶する施設名検索用情報を作成する検索用情報作成処理を示すメインフローチャートである。
【図４】図３の「文字インデックス部テーブル作成処理」のサブ処理を示すサブフローチャートである。
【図５】図４の「インデックス統合処理」のサブ処理を示すサブフローチャートである。
【図６】キーワード「かかかか」を各格納形式で表した一例を示す図である。
【図７】キーワード「かききかききき」を各格納形式で表した一例を示す図である。
【図８】階乗個数テーブルの一例を示す図である。
【図９】インデックスカウントテーブルの一例を示す図である。
【図１０】統合カウントテーブルの一例を示す図である。
【図１１】検索情報ＤＢに格納される文字インデックス部テーブルの一例を示す図である。
【図１２】図３の「ビットインデックス部テーブル作成処理」のサブ処理を示すサブフローチャートである。
【図１３】キーワード「かいしようかんきようかいはつ」を各格納形式で表した一例を示す図である。
【図１４】キーワード「おかさきこうしようおかさきかんり」を各格納形式で表した一例を示す図である。
【図１５】インデックスカウントテーブルの一例を示す図である。
【図１６】統合カウントテーブルの一例を示す図である。
【図１７】検索情報ＤＢに格納されるビットインデックス部テーブルの一例を示す図である。
【図１８】図３の「順列部テーブル作成処理」のサブ処理を示すサブフローチャートである。
【図１９】図１８の「格納形式２の順列部作成処理」のサブ処理を示すサブフローチャートである。
【図２０】図１８の「格納形式３の順列部作成処理」のサブ処理を示すサブフローチャートである。
【図２１】検索情報ＤＢに格納される順列部テーブルの一例を示す図である。
【図２２】本実施例に係るナビゲーション装置を示したブロック図である。
【図２３】入力された検索語に基づいて該当件数と次文字を取得する検索補助情報取得処理を示すフローチャートである。
【図２４】入力された検索語に基づいて該当件数と次文字を取得する検索補助情報取得処理を示すフローチャートである。
【図２５】入力された検索語に基づいて該当件数と次文字を取得する検索補助情報取得処理を示すフローチャートである。
【図２６】図２３の「文字インデックス番号取得処理」のサブ処理を示すサブフローチャートである。
【図２７】図２３の「ビットインデックス番号取得処理」のサブ処理を示すサブフローチャートである。
【図２８】検索語「かかかか」が入力された検索語入力画面の一例を示す図である。
【発明を実施するための形態】
【００２４】
以下、本発明に係る検索情報作成装置、検索情報作成方法及びプログラムを具体化した一実施例に基づき図面を参照しつつ詳細に説明する。
【実施例】
【００２５】
［情報作成装置の概略構成］
先ず、本実施例に係る検索情報作成装置の一例としての情報作成装置１の概略構成について図１に基づいて説明する。図１は本実施例に係る情報作成装置１を示したブロック図である。
図１に示すように、本実施例に係る情報作成装置１は、各種のデータが記録されたデータ記録部１１と、入力された情報に基づいて、各種の演算処理を行う制御部１２と、操作者からの操作を受け付ける操作部１４と、操作者に対して施設名等の情報を表示する液晶ディスプレイ１５と、操作案内等に関する音声ガイダンスを出力するスピーカ１６と、不図示の地図情報配信センタ等との間で携帯電話網等を介して通信を行う通信装置１７と、フラッシュメモリを搭載した携帯型記憶媒体の一例としてのＳＤメモリカード５に後述の階乗個数テーブル３２（図８参照）、文字インデックス部テーブル３５（図１１参照）、ビットインデックス部テーブル３８（図１７参照）、順列部テーブル３９（図２１参照）等を書き込み、また、該ＳＤメモリカード５から施設名情報としての後述の施設名データテーブル３１（図２参照）を読み出すカードリードライト部（カードＲ／Ｗ部）１９とから構成されている。
【００２６】
また、情報作成装置１は、ネットワーク４を介してナビゲーション装置２と各種の情報の送受信が可能となるように構成されている。例えば、情報作成装置１は、後述の施設名データテーブル３１（図２参照）、階乗個数テーブル３２（図８参照）、文字インデックス部テーブル３５（図１１参照）、ビットインデックス部テーブル３８（図１７参照）、順列部テーブル３９（図２１参照）等をネットワーク４を介してナビゲーション装置２へ配信することができる。また、ネットワーク４としては、例えば、携帯電話回線網、電話回線網、公衆通信回線網、専用通信回線網、インターネット等の通信回線網等の通信系を使用することができる。
【００２７】
以下に、情報作成装置１を構成する各構成要素について説明すると、データ記録部１１は、外部記憶装置及び記録媒体としてのハードディスク（図示せず）と、ハードディスクに記憶された施設名データベース（施設名ＤＢ）２７、検索情報データベース（検索情報ＤＢ）２８及び所定のプログラム等を読み出すとともにハードディスクに所定のデータを書き込む為のドライバを備えている。
【００２８】
この施設名ＤＢ２７には、施設名とキーワードで区切った施設名の読みとを関連付けて記憶する後述の施設名データテーブル３１（図２参照）等が格納されている。ここで、キーワードは、意味を成す単位で構成された単語の文字列である。また、検索情報ＤＢ２８には、後述の階乗個数テーブル３２、文字インデックス部テーブル３５、ビットインデックス部テーブル３８、順列部テーブル３９等が格納されている。
【００２９】
また、図１に示すように、情報作成装置１を構成する制御部１２は、情報作成装置１の全体の制御を行う演算装置及び制御装置としてのＣＰＵ２１、ＣＰＵ２１が各種の演算処理を行うに当たってワーキングメモリとして使用されるＲＡＭ２２、制御用のプログラム等が記憶されたＲＯＭ２３、ＳＤメモリカード５やＲＯＭ２３から読み出したプログラムを記憶するフラッシュメモリ２４等の内部記憶装置や、時間を計測するタイマ２５等を備えている。
【００３０】
また、ＲＯＭ２３には、後述の施設名検索用情報としての文字インデックス部テーブル３５、ビットインデックス部テーブル３８、順列部テーブル３９を作成する検索用情報作成処理のプログラム（図３参照）等が記憶されている。また、ＲＯＭ２３に各種のプログラムが記憶されるようになっているが、カードＲ／Ｗ部１９を介してＳＤメモリカード５からプログラム、施設名データテーブル３１、階乗個数テーブル３２等を読み出してフラッシュメモリ２４やデータ記録部１１に書き込むこともできる。更に、ＳＤメモリカード５を交換することによってプログラムや施設名データテーブル３１等を更新することができる。
【００３１】
更に、制御部１２には、操作部１４、液晶ディスプレイ１５、スピーカ１６、通信装置１７、カードＲ／Ｗ部１９の各周辺装置（アクチュエータ）が電気的に接続されている。尚、本実施例においては、カードＲ／Ｗ部１９には、ＳＤメモリカード５が装着されるが、ミニＳＤメモリカード、マイクロＳＤメモリカード等を使用するようにしてもよい。
【００３２】
ここで、施設名ＤＢ２７に格納される施設名データテーブル３１の一例について図２に基づいて説明する。
図２に示すように、施設名データテーブル３１は、「施設名」と、「読み」とから構成されている。この、「施設名」には、検索対象となる目的地を表す施設名が記憶されている。また、「読み」には、施設名の読みが、「施設名」に記憶された各施設名に対応して記憶されている。また、施設名の読みは、キーワード毎に区切り文字（例えば「／」である。）で区切られて記憶されている。
【００３３】
尚、施設名の読みに含まれる「が」、「ぱ」等の濁音・半濁音は「か」、「は」等の清音に、「ゃ」、「っ」等の小文字仮名（拗音・促音）は「や」、「つ」等の大文字仮名に、長音は対応する母音等のように、仮名の基本文字に変換して記憶される。例えば、「バーバースノー」の読みは、「はあはあ／すのお」と記憶される。また、「かなのじゅーじゅー美合町店」の読みは、「かなのしゆうしゆう／みあいちよう／てん」と記憶される。
【００３４】
［検索用情報作成処理］
次に、上記のように構成された情報作成装置１のＣＰＵ２１が実行する処理であって、文字インデックス部テーブル３５、ビットインデックス部テーブル３８、順列部テーブル３９を作成する「検索用情報作成処理」について図３乃至図２１に基づいて説明する。尚、図３にフローチャートで示されるプログラムは、操作部１４の不図示の施設名検索用情報作成ボタンが押下された場合に、ＣＰＵ２１により実行される。
【００３５】
図３に示すように、先ず、ステップ（以下、Ｓと略記する）１１において、ＣＰＵ２１は、文字インデックス部テーブル３５（図１１参照）を作成する「文字インデックス部テーブル作成処理」のサブ処理を実行する。
そして、Ｓ１２において、ＣＰＵ２１は、ビットインデックス部テーブル３８（図１７参照）を作成する「ビットインデックス部テーブル作成処理」のサブ処理を実行する。
続いて、Ｓ１３において、ＣＰＵ２１は、順列部テーブル３９（図２１参照）を作成する「順列部テーブル作成処理」のサブ処理を実行した後、当該処理を終了する。
【００３６】
［文字インデックス部テーブル作成処理］
次に、「文字インデックス部テーブル作成処理」のサブ処理について図４乃至図１１に基づいて説明する。
図４に示すように、Ｓ１１１において、ＣＰＵ２１は、検索対象となる検索語の読みの文字列として、施設名データテーブル３１の「読み」から全てのキーワードを順番に読み出してＳ１１２以降の処理を実行したか否かを判定する判定処理を実行する。尚、ＣＰＵ２１は、施設名データテーブル３１に記憶されている１番目の施設名から順番に、それぞれに対応する「読み」の先頭のキーワードから順次読み出し、各キーワードについてＳ１１２以降の処理を実行する。
【００３７】
そして、施設名データテーブル３１の「読み」から全てのキーワードを順番に読み出してＳ１１２以降の処理を実行していない、つまり、後述の文字インデックス部テーブル３５を作成して検索情報ＤＢ２８に格納していないと判定した場合には（Ｓ１１１：ＮＯ）、ＣＰＵ２１は、Ｓ１１２の処理に移行する。Ｓ１１２において、ＣＰＵ２１は、施設名データテーブル３１の「読み」から残っている次のキーワードを読み出して、ＲＡＭ２２に記憶する。
【００３８】
そして、Ｓ１１３において、ＣＰＵ２１は、当該キーワードの文字列を順列部テーブル３９に記憶する際の格納形式１乃至格納形式３のそれぞれで表した場合について、各格納形式１〜３のデータサイズ（バイト数）を算出する。
【００３９】
ここで、格納形式１乃至格納形式３について図６及び図７に基づいて説明する。
図６及び図７に示すように、「格納形式１」は、キーワードの文字列の文字数を１バイトで表した「文字数」と、この文字列の各文字を、全文字コードとしての全文字種類（５０音では、「あ、い、う、・・・、ん」の仮名である。）の各文字を表す１バイトの文字コードから選択した文字コードの順列にて表した「順列部」とから構成した格納形式である。従って、キーワードが４文字の「かかかか」の場合には、格納形式１では、５バイトのデータサイズとなる。また、キーワードが７文字の「かききかききき」の場合には、格納形式１では、８バイトのデータサイズとなる。
【００４０】
また、「格納形式２」は、キーワードの文字列の文字種類の種類数を１バイトで表した「文字の種類」と、この文字列を構成する各文字種類を、部分文字コードとしての１バイトの文字コードで表した「文字インデックス部」と、この文字列の文字数を１バイトで表した「文字数」と、この文字列を、「文字インデックス部」を構成する文字種類中での順番を示すことができるビット数の数値（「識別ビットコード」として機能する。）の順列にて表した「順列部」と、から構成した格納形式である。
【００４１】
従って、キーワードが４文字の「かかかか」の場合には、各文字「か」を１ビットの数値で表すことができるため、格納形式２では、４バイトのデータサイズとなる。また、キーワードが７文字の「かききかききき」の場合には、各文字「か」、「き」を２ビットの数値で表すことができるため、格納形式２では、６バイトのデータサイズとなる。
【００４２】
また、「格納形式３」は、キーワードの読みに用いる全文字種類（５０音では、「あ、い、う、・・・、ん」の仮名である。）に対応するビット配列を有する固定バイト数（５０音では、６バイトである。）で構成され、キーワードの文字列を構成する文字種類に対応するビットをＯＮに設定し、それ以外のビットをＯＦＦに設定した「ビットインデックス部」と、この文字列の文字数を１バイトで表した「文字数」と、この文字列を、「ビットインデックス部」でＯＮに設定された文字種類中での順番を示すことができるビット数の数値（「識別ビットコード」として機能する。）の順列にて表した「順列部」と、から構成した格納形式である。
【００４３】
従って、キーワードが４文字の「かかかか」の場合には、各文字「か」を１ビットの数値で表すことができるため、格納形式３では、８バイトのデータサイズとなる。また、キーワードが７文字の「かききかききき」の場合には、各文字「か」、「き」を２ビットの数値で表すことができるため、格納形式３では、９バイトのデータサイズとなる。
【００４４】
続いて、図４に示すように、Ｓ１１４において、ＣＰＵ２１は、当該キーワードの文字列を順列部テーブル３９に記憶する格納形式２のデータサイズが、格納形式１及び格納形式３の各データサイズよりも少ないデータサイズか否かを判定する判定処理を実行する。そして、当該キーワードの文字列を順列部テーブル３９に格納する格納形式２のデータサイズが、格納形式１及び格納形式３の各データサイズよりも少ないデータサイズでないと判定した場合には（Ｓ１１４：ＮＯ）、ＣＰＵ２１は、再度Ｓ１１１以降の処理を実行する。
【００４５】
一方、当該キーワードの文字列を順列部テーブル３９に格納する格納形式２のデータサイズが、格納形式１及び格納形式３の各データサイズよりも少ないデータサイズであると判定した場合には（Ｓ１１４：ＹＥＳ）、ＣＰＵ２１は、Ｓ１１５の処理に移行する。Ｓ１１５において、ＣＰＵ２１は、ＲＡＭ２２上に作成したインデックスカウントテーブル３３（図９参照）の「インデックス内容」に、当該格納形式２の文字インデックス部が未だ記憶されていないか否か、つまり、当該格納形式２の文字インデックス部を記憶する必要があるか否かを判定する判定処理を実行する。
【００４６】
ここで、先ず、検索情報ＤＢ２８に予め格納されている階乗個数テーブル３２について図８に基づいて説明する。
図８に示すように、階乗個数テーブル３２は、「文字の種類」と、「階乗個数」とから構成されている。この「文字の種類」には、キーワードの文字列を構成する文字種類の種類数が記憶されている。また、「階乗個数」には、この「文字の種類」に記憶されている種類数を表すために必要なビット数で表現できる最大値、つまり、Ｎビットの場合は、２のＮ乗の数値が記憶されている。
【００４７】
例えば、「文字の種類」が「１〜２」種類の場合には、「階乗個数」には、１ビットで文字種類数を表すことができるため、２の１乗の「２」が記憶されている。また、「文字の種類」が「３〜４」種類の場合には、「階乗個数」には、２ビットで文字種類数を表すことができるため、２の２乗の「４」が記憶されている。また、「文字の種類」が「５〜８」種類の場合には、「階乗個数」には、３ビットで文字種類数を表すことができるため、２の３乗の「８」が記憶されている。
【００４８】
次に、ＲＡＭ２２上に作成されたインデックスカウントテーブル３３について図９に基づいて説明する。
図９に示すように、インデックスカウントテーブル３３は、「階乗個数」と、「インデックス内容」と、「カウント値」とから構成されている。この「階乗個数」には、格納形式２の「文字インデックス部」の文字種類の種類数を階乗個数テーブル３２の「文字の種類」とした場合に、この「文字の種類」に対応する「階乗個数」の数値が記憶される。
【００４９】
また、「インデックス内容」には、格納形式２の「文字インデックス部」が記憶される。また、「カウント値」には、「インデックス内容」に記憶されている文字種類を格納形式２の「文字インデックス部」とするキーワードの個数が記憶される。尚、情報作成装置１の起動時には、この「カウント値」には、「０」が記憶されている。
【００５０】
そして、図４に示すように、インデックスカウントテーブル３３の「インデックス内容」に、当該文字インデックス部が未だ記憶されていない、つまり、当該文字インデックス部を記憶する必要があると判定した場合には（Ｓ１１５：ＹＥＳ）、ＣＰＵ２１は、Ｓ１１６の処理に移行する。
【００５１】
Ｓ１１６において、ＣＰＵ２１は、当該文字インデックス部の文字種類の種類数を階乗個数テーブル３２の「文字の種類」として、この「文字の種類」に対応する「階乗個数」の数値を読み出し、インデックスカウントテーブル３３の「階乗個数」に記憶する。また、ＣＰＵ２１は、当該文字インデックス部をインデックスカウントテーブル３３の「インデックス内容」に記憶した後、Ｓ１１７の処理に移行する。
【００５２】
例えば、図９に示すように、格納形式２の「文字インデックス部」が１バイトの文字コード「か」の場合には（図６参照）、文字種類の種類数は「１」種類のため、ＣＰＵ２１は、インデックスカウントテーブル３３の「階乗個数」に「２」を記憶する。また、ＣＰＵ２１は、インデックスカウントテーブル３３の「インデックス内容」には、１バイトの文字コード「か」を記憶する。
【００５３】
一方、インデックスカウントテーブル３３の「インデックス内容」に、当該文字インデックス部が既に記憶されている、つまり、当該文字インデックス部を記憶する必要がないと判定した場合には（Ｓ１１５：ＮＯ）、ＣＰＵ２１は、Ｓ１１７の処理に移行する。Ｓ１１７において、ＣＰＵ２１は、インデックスカウントテーブル３３の当該文字インデックス部が記憶されている「インデックス内容」に対応する「カウント値」を読み出し、この「カウント値」に「１」加算して再度記憶した後、再度Ｓ１１１以降の処理を実行する。
【００５４】
例えば、図９に示すように、文字インデックス部「かき」がインデックスカウントテーブル３３の「インデックス内容」に初めて記憶された場合には、「インデックス内容」の「か」に対応する「カウント値」に「１」が記憶される。また、文字インデックス部「か」が「インデックス内容」に記憶されていた場合には、「インデックス内容」の「か」に対応する「カウント値」の「１」がインクリメントされて「２」となる。
【００５５】
他方、上記Ｓ１１１で、施設名データテーブル３１の「読み」から全てのキーワードを順番に読み出してＳ１１２以降の処理を実行したと判定した場合には（Ｓ１１１：ＹＥＳ）、ＣＰＵ２１は、Ｓ１１８の処理に移行する。Ｓ１１８において、ＣＰＵ２１は、「インデックス統合処理」のサブ処理を実行後、Ｓ１１９の処理に移行する。
【００５６】
［インデックス統合処理］
ここで、「インデックス統合処理」のサブ処理について図５及び図１０に基づいて説明する。
図５に示すように、Ｓ２１１において、ＣＰＵ２１は、インデックスカウントテーブル３３の「インデックス内容」に記憶されている全データについてＳ２１２以降の処理を実行したか否かを判定する判定処理を実行する。
【００５７】
そして、インデックスカウントテーブル３３の「インデックス内容」に記憶されている全データについてＳ２１２以降の処理を実行していないと判定した場合には（Ｓ２１１：ＮＯ）、ＣＰＵ２１は、Ｓ２１２の処理に移行する。Ｓ２１２において、ＣＰＵ２１は、インデックスカウントテーブル３３の「インデックス内容」に残っているデータのうち、文字コードの数（以下、「文字数」という。）の多い方から次のインデックス内容と、このインデックス内容に対応する「階乗個数」及び「カウント値」とを読み出して、ＲＡＭ２２に記憶する。
【００５８】
続いて、Ｓ２１３において、ＣＰＵ２１は、読み出した当該インデックス内容の文字数と階乗個数とが一致するか否かを判定する判定処理を実行する。そして、読み出した当該インデックス内容の文字数と階乗個数とが一致すると判定した場合には（Ｓ２１３：ＹＥＳ）、ＣＰＵ２１は、Ｓ２１４の処理に移行する。
【００５９】
Ｓ２１４において、ＣＰＵ２１は、ＲＡＭ２２上に作成した統合カウントテーブル３４（図１０参照）の「インデックス候補」に当該インデックス内容を記憶すると共に、このインデックス候補に対応する「階乗個数」と「カウント値」に当該階乗個数と当該カウント値を記憶した後、再度Ｓ２１１以降の処理を実行する。
【００６０】
ここで、ＲＡＭ２２上に作成された統合カウントテーブル３４について図１０に基づいて説明する。図１０に示すように、統合カウントテーブル３４は、「階乗個数」と、「インデックス候補」と、「カウント値」とから構成されている。従って、統合カウントテーブル３４の「インデックス候補」には、格納形式２の「文字インデックス部」が記憶される。
【００６１】
例えば、図９に示すように、インデックスカウントテーブル３３からインデックス内容として２バイトの文字コード「かく」と、階乗個数として「２」、カウント値として「２」を読み出して、当該インデックス内容「かく」の文字数「２」文字と階乗個数「２」とが一致すると判定した場合には（Ｓ２１３：ＹＥＳ）、ＣＰＵ２１は、当該階乗個数「２」を統合カウントテーブル３４の「階乗個数」に記憶する。また、ＣＰＵ２１は、当該２バイトの文字コード「かく」と当該カウント値「２」を統合カウントテーブル３４の「インデックス候補」と「カウント値」にそれぞれ記憶する。
【００６２】
一方、読み出した当該インデックス内容の文字数と階乗個数とが一致しないと判定した場合には（Ｓ２１３：ＮＯ）、ＣＰＵ２１は、Ｓ２１５の処理に移行する。Ｓ２１５において、ＣＰＵ２１は、統合カウントテーブル３４の「インデックス候補」の全データと当該インデックス内容との包含関係をチェックしたか否かを判定する判定処理を実行する。
【００６３】
そして、統合カウントテーブル３４の「インデックス候補」の全データと当該インデックス内容との包含関係をチェックして、当該インデックス内容の文字コードを全て包含するインデックス候補が無かったと判定した場合には（Ｓ２１５：ＹＥＳ）、ＣＰＵ２１は、上記Ｓ２１４の処理に移行する。Ｓ２１４において、ＣＰＵ２１は、当該インデックス内容を統合カウントテーブル３４の「インデックス候補」に記憶すると共に、このインデックス候補に対応する「階乗個数」と「カウント値」に当該階乗個数と当該カウント値をそれぞれ記憶した後、再度Ｓ２１１以降の処理を実行する。
【００６４】
一方、統合カウントテーブル３４の「インデックス候補」の全データと当該インデックス内容との包含関係をチェックしていないと判定した場合には（Ｓ２１５：ＮＯ）、ＣＰＵ２１は、Ｓ２１６の処理に移行する。Ｓ２１６において、統合カウントテーブル３４から次のインデックス候補を読み出し、ＲＡＭ２２に記憶する。
【００６５】
続いて、Ｓ２１７において、ＣＰＵ２１は、この次のインデックス候補の文字数が、当該インデックス内容に対応する当該階乗個数以下か否かを判定する判定処理を実行する。そして、この次のインデックス候補の文字数が、当該インデックス内容に対応する当該階乗個数よりも大きい、つまり、インデックス候補の文字種類中での順番を示すことができるビット数が、当該階乗個数よりも大きいと判定した場合には（Ｓ２１７：ＮＯ）、ＣＰＵ２１は、再度Ｓ２１５以降の処理を実行する。
【００６６】
一方、この次のインデックス候補の文字数が、当該インデックス内容に対応する当該階乗個数以下である、つまり、インデックス候補の文字種類中での順番を示すことができるビット数が、当該階乗個数以下であると判定した場合には（Ｓ２１７：ＹＥＳ）、ＣＰＵ２１は、Ｓ２１８の処理に移行する。Ｓ２１８において、ＣＰＵ２１は、この次のインデックス候補の文字種類の中に当該インデックス内容の全ての文字種類が含まれる包含関係にあるか否かを判定する判定処理を実行する。
【００６７】
そして、この次のインデックス候補の文字種類に当該インデックス内容の全ての文字種類が含まれていないと判定した場合には（Ｓ２１８：ＮＯ）、ＣＰＵ２１は、再度Ｓ２１５以降の処理を実行する。
一方、この次のインデックス候補の文字種類に当該インデックス内容の全ての文字種類が含まれる包含関係にあると判定した場合には（Ｓ２１８：ＹＥＳ）、ＣＰＵ２１は、Ｓ２１９の処理に移行する。
【００６８】
Ｓ２１９において、ＣＰＵ２１は、統合カウントテーブル３４の当該インデックス候補に対応する「カウント値」を読み出し、インデックスカウントテーブル３３の当該インデックス内容に対応する「カウント値」を加算して、再度、統合カウントテーブル３４の当該インデックス候補に対応する「カウント値」に記憶した後、再度Ｓ２１１以降の処理を実行する。
【００６９】
例えば、図９及び図１０に示すように、統合カウントテーブル３４のインデックス候補の「かき」の文字数「２」は、インデックスカウントテーブル３３のインデックス内容「か」の階乗個数「２」以下であり、また、インデックス候補「かき」の文字種類の中にインデックス内容「か」の全ての文字種類が含まれる。従って、ＣＰＵ２１は、インデックス候補「かき」のカウント値「１」を読み出し、インデックスカウントテーブル３３の当該インデックス内容「か」に対応するカウント値「２」を加算したカウント値「３」を統合カウントテーブル３４の当該インデックス候補「かき」に対応する「カウント値」に記憶する。
【００７０】
他方、上記Ｓ２１１で、インデックスカウントテーブル３３の「インデックス内容」に記憶されている全データについてＳ２１２以降の処理を実行したと判定した場合、つまり、統合カウントテーブル３４の作成を終了した場合には（Ｓ２１１：ＹＥＳ）、ＣＰＵ２１は、当該サブ処理を終了して、「文字インデックス部テーブル作成処理」のサブ処理に戻り、Ｓ１１９の処理に移行する。
【００７１】
そして、図４に示すように、Ｓ１１９において、ＣＰＵ２１は、統合カウントテーブル３４の「インデックス候補」に記憶されている全データについてＳ１２０以降の処理を実行したか否かを判定する判定処理を実行する。そして、統合カウントテーブル３４の「インデックス候補」に記憶されている全データについてＳ１２０以降の処理を実行していないと判定した場合には（Ｓ１１９：ＮＯ）、ＣＰＵ２１は、Ｓ１２０の処理に移行する。
【００７２】
Ｓ１２０において、ＣＰＵ２１は、統合カウントテーブル３４の「インデックス候補」に残っているデータから次のインデックス候補と、このインデックス候補に対応する「階乗個数」及び「カウント値」とを読み出して、ＲＡＭ２２に記憶する。尚、ＣＰＵ２１は、「インデックス候補」に残っているデータのうち、文字種類の少ない順で、且つ、５０音順に次のインデックス候補と、このインデックス候補に対応する「階乗個数」及び「カウント値」とを読み出して、ＲＡＭ２２に記憶するようにしてもよい。
【００７３】
続いて、Ｓ１２１において、ＣＰＵ２１は、読み出した「カウント値」が「２」以上か否か、つまり、２回以上カウントされているか否かを判定する判定処理を実行する。そして、この「カウント値」が「１」の場合には（Ｓ１２１：ＮＯ）、ＣＰＵ２１は、再度Ｓ１１９以降の処理を実行する。
【００７４】
一方、この「カウント値」が「２」以上の場合には（Ｓ１２１：ＹＥＳ）、ＣＰＵ２１は、当該インデックス候補は２つ以上の格納形式２の順列部に対して利用できる共有インデックス部であると判定し、Ｓ１２２の処理に移行する。Ｓ１２２において、ＣＰＵ２１は、ＲＡＭ２２上に作成した統合インデックスデータとしての文字インデックス部テーブル３５（図１１参照）の統合インデックス部としての「インデックス内容」に当該インデックス候補を記憶すると共に、この「インデックス内容」に対応する「階乗個数」に当該インデックス候補に対応する階乗個数を記憶する。
【００７５】
そして、ＣＰＵ２１は、この「インデックス内容」に対応する文字インデックス部テーブル３５のインデックスコードとしての「文字インデックス番号」に、インデックス内容を識別する識別コードを記憶した後、再度Ｓ１１９以降の処理を実行する。例えば、識別コードとして、当該インデックス候補を「インデックス内容」に記憶した順番を表す番号を記憶する。
【００７６】
ここで、ＲＡＭ２２上に作成された文字インデックス部テーブル３５について図１１に基づいて説明する。
図１１に示すように、文字インデックス部テーブル３５は、「階乗個数」と、格納形式２の文字インデックス部を記憶する「インデックス内容」と、インデックス内容に記憶した文字インデックス部を識別する識別コードを記憶する「文字インデックス番号」とから構成されている。
【００７７】
従って、文字インデックス部テーブル３５の「インデックス内容」には、格納形式２の「文字インデックス部」のうち、２回以上使用される文字インデックス部、又は、他の文字インデックス部の全ての文字種類を含んだ文字インデックス部が記憶される。
【００７８】
他方、上記Ｓ１１９で、統合カウントテーブル３４の「インデックス候補」に記憶されている全データについてＳ１２０以降の処理を実行したと判定した場合、つまり、文字インデックス部テーブル３５の作成を終了した場合には（Ｓ１１９：ＹＥＳ）、ＣＰＵ２１は、作成した文字インデックス部テーブル３５を検索情報ＤＢ２８に格納した後、当該サブ処理を終了してメインフローチャートに戻る。
【００７９】
尚、ＣＰＵ２１は、文字インデックス部テーブル３５の「インデックス内容」を文字種類の少ない順で、且つ、５０音順にソートした後、「文字インデックス番号」に識別コードとして「１」から順番に番号を記憶した後、当該文字インデックス部テーブル３５を検索情報ＤＢ２８に格納するようにしてもよい。
【００８０】
［ビットインデックス部テーブル作成処理］
次に、「ビットインデックス部テーブル作成処理」のサブ処理について図１２乃至図１７に基づいて説明する。
図１２に示すように、Ｓ３１１において、ＣＰＵ２１は、上記Ｓ１１１の処理を実行する。そして、施設名データテーブル３１の「読み」から全てのキーワードを順番に読み出してＳ３１２以降の処理を実行していない、つまり、後述のビットインデックス部テーブル３８を作成して検索情報ＤＢ２８に格納していないと判定した場合には（Ｓ３１１：ＮＯ）、ＣＰＵ２１は、Ｓ３１２の処理に移行する。
【００８１】
Ｓ３１２において、ＣＰＵ２１は、上記Ｓ１１２の処理を実行する。そして、Ｓ３１３において、ＣＰＵ２１は、上記Ｓ１１３の処理を実行して、当該キーワードの文字列を順列部テーブル３９に記憶する際の格納形式１乃至格納形式３のそれぞれで表した場合について、各格納形式１〜３のデータサイズ（バイト数）を算出する。
【００８２】
ここで、格納形式１乃至格納形式３のデータサイズ（バイト数）の一例について図１３及び図１４に基づいて説明する。
図１３に示すように、キーワードが１４文字の「かいしようかんきようかいはつ」の場合には、格納形式１では、１５バイトのデータサイズとなる。また、格納形式２では、１８バイトのデータサイズとなる。また、格納形式３では、１４バイトのデータサイズとなる。
【００８３】
また、図１４に示すように、キーワードが１６文字の「おかさきこうしようおかさきかんり」の場合には、格納形式１では、１７バイトのデータサイズとなる。また、格納形式２では、２０バイトのデータサイズとなる。また、格納形式３では、１５バイトのデータサイズとなる。
【００８４】
続いて、図１２に示すように、Ｓ３１４において、ＣＰＵ２１は、当該キーワードの文字列を順列部テーブル３９に記憶する格納形式３のデータサイズが、格納形式１及び格納形式２の各データサイズよりも少ないデータサイズか否かを判定する判定処理を実行する。そして、当該キーワードの文字列を順列部テーブル３９に格納する格納形式３のデータサイズが、格納形式１及び格納形式２の各データサイズよりも少ないデータサイズでないと判定した場合には（Ｓ３１４：ＮＯ）、ＣＰＵ２１は、再度Ｓ３１１以降の処理を実行する。
【００８５】
一方、当該キーワードの文字列を順列部テーブル３９に格納する格納形式３のデータサイズが、格納形式１及び格納形式２の各データサイズよりも少ないデータサイズであると判定した場合には（Ｓ３１４：ＹＥＳ）、ＣＰＵ２１は、Ｓ３１５の処理に移行する。Ｓ３１５において、ＣＰＵ２１は、ＲＡＭ２２上に作成したインデックスカウントテーブル３６（図１５参照）の「インデックス内容」に、当該格納形式３のビットインデックス部が未だ記憶されていないか否か、つまり、当該格納形式３のビットインデックス部を記憶する必要があるか否かを判定する判定処理を実行する。
【００８６】
ここで、ＲＡＭ２２上に作成されたインデックスカウントテーブル３６について図１５に基づいて説明する。
図１５に示すように、インデックスカウントテーブル３６は、「階乗個数」と、「インデックス内容」と、「カウント値」とから構成されている。この「階乗個数」には、格納形式３の「ビットインデックス部」のＯＮに設定された各ビットに対応する文字種類の種類数を階乗個数テーブル３２の「文字の種類」とした場合に、この「文字の種類」に対応する「階乗個数」の数値が記憶される。
【００８７】
また、「インデックス内容」には、格納形式３の「ビットインデックス部」を構成する６バイト固定のビット配列が記憶される。尚、図１５においては、説明を簡単にするため、インデックスカウントテーブル３６の「インデックス内容」に、６バイトのビット配列に替えて、「ビットインデックス部」のＯＮに設定された各ビットに対応する文字種類を記載し、この文字種類に基づいて「インデックス内容」を説明する。
【００８８】
また、「カウント値」には、「インデックス内容」に記憶されている６バイトのビット配列を格納形式３の「ビットインデックス部」とするキーワードの個数が記憶される。尚、情報作成装置１の起動時には、この「カウント値」には、「０」が記憶されている。
【００８９】
そして、図１２に示すように、インデックスカウントテーブル３６の「インデックス内容」に、当該ビットインデックス部が未だ記憶されていない、つまり、当該ビットインデックス部を記憶する必要があると判定した場合には（Ｓ３１５：ＹＥＳ）、ＣＰＵ２１は、Ｓ３１６の処理に移行する。
【００９０】
Ｓ３１６において、ＣＰＵ２１は、当該ビットインデックス部のＯＮに設定された各ビットに対応する文字種類の種類数を階乗個数テーブル３２の「文字の種類」として、この「文字の種類」に対応する「階乗個数」の数値を読み出し、インデックスカウントテーブル３６の「階乗個数」に記憶する。また、ＣＰＵ２１は、当該ビットインデックス部をインデックスカウントテーブル３６の「インデックス内容」に記憶した後、Ｓ３１７の処理に移行する。
【００９１】
例えば、図１５に示すように、格納形式３の「ビットインデックス部」が、「うかきくふる」に対応するビットがＯＮに設定されている場合には、文字種類の種類数は「６」種類のため、ＣＰＵ２１は、インデックスカウントテーブル３６の「階乗個数」に「８」を記憶する。また、ＣＰＵ２１は、インデックスカウントテーブル３６の「インデックス内容」には、「うかきくふる」に対応するビットがＯＮに設定されている６バイトのビット配列を記憶する。
【００９２】
一方、インデックスカウントテーブル３６の「インデックス内容」に、当該ビットインデックス部が既に記憶されている、つまり、当該ビットインデックス部を記憶する必要がないと判定した場合には（Ｓ３１５：ＮＯ）、ＣＰＵ２１は、Ｓ３１７の処理に移行する。Ｓ３１７において、ＣＰＵ２１は、インデックスカウントテーブル３６の当該ビットインデックス部が記憶されている「インデックス内容」に対応する「カウント値」を読み出し、この「カウント値」に「１」加算して再度記憶した後、再度Ｓ３１１以降の処理を実行する。
【００９３】
例えば、図１５に示すように、「うかきくふる」に対応するビットがＯＮに設定されたビットインデックス部が、インデックスカウントテーブル３６の「インデックス内容」に初めて記憶された場合には、「インデックス内容」の「うかきくふる」に対応する「カウント値」に「１」が記憶される。また、「インデックス内容」の「うかきくふる」が「インデックス内容」に記憶されていた場合には、「インデックス内容」の「うかきくふる」に対応する「カウント値」の「１」がインクリメントされて「２」となる。
【００９４】
他方、上記Ｓ３１１で、施設名データテーブル３１の「読み」から全てのキーワードを順番に読み出してＳ３１２以降の処理を実行したと判定した場合には（Ｓ３１１：ＹＥＳ）、ＣＰＵ２１は、Ｓ３１８の処理に移行する。Ｓ３１８において、ＣＰＵ２１は、上記Ｓ１１８で実行した「インデックス統合処理」のサブ処理を再度、実行後、Ｓ３１９の処理に移行する。
【００９５】
［インデックス統合処理］
ここで、「インデックス統合処理」のサブ処理について図５及び図１６に基づいて説明する。尚、ＣＰＵ２１は、上記インデックスカウントテーブル３３に替えて、図１５に示すインデックスカウントテーブル３６を用いて「インデックス統合処理」を実行する。
図５に示すように、Ｓ２１１において、ＣＰＵ２１は、インデックスカウントテーブル３６の「インデックス内容」に記憶されている全データについてＳ２１２以降の処理を実行したか否かを判定する判定処理を実行する。
【００９６】
そして、インデックスカウントテーブル３６の「インデックス内容」に記憶されている全データについてＳ２１２以降の処理を実行していないと判定した場合には（Ｓ２１１：ＮＯ）、ＣＰＵ２１は、Ｓ２１２の処理に移行する。Ｓ２１２において、ＣＰＵ２１は、インデックスカウントテーブル３６の「インデックス内容」に残っている６バイトの各データのうち、ＯＮに設定されているビット数（以下、「文字数」という。）の多い方から次のインデックス内容と、このインデックス内容に対応する「階乗個数」及び「カウント値」とを読み出して、ＲＡＭ２２に記憶する。
【００９７】
続いて、Ｓ２１３において、ＣＰＵ２１は、読み出した当該インデックス内容の文字数と階乗個数とが一致するか否か、つまり、ＯＮに設定されているビット数と階乗個数とが一致するか否かを判定する判定処理を実行する。そして、読み出した当該インデックス内容の文字数と階乗個数とが一致すると判定した場合には（Ｓ２１３：ＹＥＳ）、ＣＰＵ２１は、Ｓ２１４の処理に移行する。
【００９８】
Ｓ２１４において、ＣＰＵ２１は、ＲＡＭ２２上に作成した統合カウントテーブル３７（図１６参照）の「インデックス候補」に当該インデックス内容の６バイトのビット配列を記憶すると共に、このインデックス候補に対応する「階乗個数」と「カウント値」に当該階乗個数と当該カウント値を記憶した後、再度Ｓ２１１以降の処理を実行する。
【００９９】
ここで、ＲＡＭ２２上に作成された統合カウントテーブル３７について図１６に基づいて説明する。図１６に示すように、統合カウントテーブル３７は、「階乗個数」と、「インデックス候補」と、「カウント値」とから構成されている。従って、統合カウントテーブル３７の「インデックス候補」には、格納形式３の「ビットインデックス部」が記憶される。尚、図１６においては、説明を簡単にするため、統合カウントテーブル３７の「インデックス候補」に、６バイトのビット配列に替えて、「ビットインデックス部」のＯＮに設定された各ビットに対応する文字種類を記載し、この文字種類に基づいて「インデックス候補」を説明する。
【０１００】
一方、読み出した当該インデックス内容の文字数と階乗個数とが一致しないと判定した場合には（Ｓ２１３：ＮＯ）、ＣＰＵ２１は、Ｓ２１５の処理に移行する。Ｓ２１５において、ＣＰＵ２１は、統合カウントテーブル３７の「インデックス候補」の全データと当該インデックス内容との包含関係をチェックしたか否かを判定する判定処理を実行する。
【０１０１】
そして、統合カウントテーブル３７の「インデックス候補」の全データと当該インデックス内容との包含関係をチェックして、当該インデックス内容の６バイトのビット配列を全て包含するインデックス候補が無かったと判定した場合には（Ｓ２１５：ＹＥＳ）、ＣＰＵ２１は、上記Ｓ２１４の処理に移行する。Ｓ２１４において、ＣＰＵ２１は、当該インデックス内容の６バイトのビット配列を統合カウントテーブル３４の「インデックス候補」に記憶すると共に、このインデックス候補に対応する「階乗個数」と「カウント値」に当該階乗個数と当該カウント値をそれぞれ記憶した後、再度Ｓ２１１以降の処理を実行する。
【０１０２】
例えば、図１６に示すように、インデックスカウントテーブル３６からインデックス内容として６バイトのビット配列「うかきくふる」と、階乗個数として「８」、カウント値として「２」を読み出して、当該インデックス内容「うかきくふる」を全て包含するインデックス候補が無かったと判定した場合には（Ｓ２１５：ＹＥＳ）、ＣＰＵ２１は、当該階乗個数「８」を統合カウントテーブル３７の「階乗個数」に記憶する。また、ＣＰＵ２１は、当該インデックス内容としての６バイトのビット配列「うかきくふる」と、当該カウント値「２」を統合カウントテーブル３７の「インデックス候補」と「カウント値」にそれぞれ記憶する。
【０１０３】
一方、統合カウントテーブル３７の「インデックス候補」の全データと当該インデックス内容との包含関係をチェックしていないと判定した場合には（Ｓ２１５：ＮＯ）、ＣＰＵ２１は、Ｓ２１６の処理に移行する。Ｓ２１６において、統合カウントテーブル３７から次のインデックス候補を読み出し、ＲＡＭ２２に記憶する。
【０１０４】
続いて、Ｓ２１７において、ＣＰＵ２１は、この次のインデックス候補の文字数が、当該インデックス内容に対応する当該階乗個数以下か否かを判定する判定処理を実行する。そして、この次のインデックス候補の文字数が、当該インデックス内容に対応する当該階乗個数よりも大きい、つまり、インデックス候補のＯＮに設定された各ビットに対応する文字種類中での順番を示すことができるビット数が、当該階乗個数よりも大きいと判定した場合には（Ｓ２１７：ＮＯ）、ＣＰＵ２１は、再度Ｓ２１５以降の処理を実行する。
【０１０５】
一方、この次のインデックス候補の文字数が、当該インデックス内容に対応する当該階乗個数以下である、つまり、インデックス候補のＯＮに設定された各ビットに対応する文字種類中での順番を示すことができるビット数が、当該階乗個数以下であると判定した場合には（Ｓ２１７：ＹＥＳ）、ＣＰＵ２１は、Ｓ２１８の処理に移行する。Ｓ２１８において、ＣＰＵ２１は、この次のインデックス候補の文字種類の中に当該インデックス内容の全ての文字種類が含まれる包含関係にあるか否か、つまり、インデックス候補のＯＮに設定されたビットの中に、当該インデックス内容のＯＮに設定されている各ビットが全て含まれる包含関係にあるか否かを判定する判定処理を実行する。
【０１０６】
そして、この次のインデックス候補の文字種類に当該インデックス内容の全ての文字種類が含まれていないと判定した場合には（Ｓ２１８：ＮＯ）、ＣＰＵ２１は、再度Ｓ２１５以降の処理を実行する。
一方、この次のインデックス候補の文字種類に当該インデックス内容の全ての文字種類が含まれる包含関係にあると判定した場合には（Ｓ２１８：ＹＥＳ）、ＣＰＵ２１は、Ｓ２１９の処理に移行する。
【０１０７】
Ｓ２１９において、ＣＰＵ２１は、統合カウントテーブル３７の当該インデックス候補に対応する「カウント値」を読み出し、インデックスカウントテーブル３６の当該インデックス内容に対応する「カウント値」を加算して、再度、統合カウントテーブル３７の当該インデックス候補に対応する「カウント値」に記憶した後、再度Ｓ２１１以降の処理を実行する。
【０１０８】
例えば、図１５及び図１６に示すように、統合カウントテーブル３７のインデックス候補の「うかきくふる」の文字数「６」は、インデックスカウントテーブル３６のインデックス内容「うかきくふ」の階乗個数「８」以下であり、また、インデックス候補「うかきくふる」の文字種類の中にインデックス内容「うかきくふ」の全ての文字種類が含まれる。従って、ＣＰＵ２１は、インデックス候補「うかきくふる」のカウント値「２」を読み出し、インデックスカウントテーブル３６の当該インデックス内容「うかきくふ」に対応するカウント値「１」を加算したカウント値「３」を統合カウントテーブル３７の当該インデックス候補「うかきくふる」に対応する「カウント値」に記憶する。
【０１０９】
他方、上記Ｓ３１１で、インデックスカウントテーブル３６の「インデックス内容」に記憶されている全データについてＳ３１２以降の処理を実行したと判定した場合、つまり、統合カウントテーブル３７の作成を終了した場合には（Ｓ２１１：ＹＥＳ）、ＣＰＵ２１は、当該サブ処理を終了して、「ビットインデックス部テーブル作成処理」のサブ処理に戻り、Ｓ３１９の処理に移行する。
【０１１０】
そして、図１２に示すように、Ｓ３１９において、ＣＰＵ２１は、統合カウントテーブル３７の「インデックス候補」に記憶されている全データについてＳ３２０以降の処理を実行したか否かを判定する判定処理を実行する。そして、統合カウントテーブル３７の「インデックス候補」に記憶されている全データについてＳ３２０以降の処理を実行していないと判定した場合には（Ｓ３１９：ＮＯ）、ＣＰＵ２１は、Ｓ３２０の処理に移行する。
【０１１１】
Ｓ３２０において、ＣＰＵ２１は、統合カウントテーブル３７の「インデックス候補」に残っているデータから次のインデックス候補と、このインデックス候補に対応する「階乗個数」及び「カウント値」とを読み出して、ＲＡＭ２２に記憶する。尚、ＣＰＵ２１は、「インデックス候補」に残っているデータのうち、文字種類の少ない順、つまり、ＯＮに設定されているビットの少ない順で、且つ、５０音順に次のインデックス候補と、このインデックス候補に対応する「階乗個数」及び「カウント値」とを読み出して、ＲＡＭ２２に記憶するようにしてもよい。
【０１１２】
続いて、Ｓ３２１において、ＣＰＵ２１は、読み出した「カウント値」が「２」以上か否か、つまり、２回以上カウントされているか否かを判定する判定処理を実行する。そして、この「カウント値」が「１」の場合には（Ｓ３２１：ＮＯ）、ＣＰＵ２１は、再度Ｓ３１９以降の処理を実行する。
【０１１３】
一方、この「カウント値」が「２」以上の場合には（Ｓ３２１：ＹＥＳ）、ＣＰＵ２１は、当該インデックス候補は２つ以上の格納形式３の順列部に対して利用できる共有インデックス部であると判定し、Ｓ３２２の処理に移行する。Ｓ３２２において、ＣＰＵ２１は、ＲＡＭ２２上に作成した統合インデックスデータとしてのビットインデックス部テーブル３８（図１７参照）の統合インデックス部としての「インデックス内容」に当該インデックス候補を記憶すると共に、この「インデックス内容」に対応する「階乗個数」に当該インデックス候補に対応する階乗個数を記憶する。
【０１１４】
そして、ＣＰＵ２１は、この「インデックス内容」に対応するビットインデックス部テーブル３８のインデックスコードとしての「ビットインデックス番号」に、インデックス内容を識別する識別コードを記憶した後、再度Ｓ３１９以降の処理を実行する。例えば、識別コードとして、当該インデックス候補を「インデックス内容」に記憶した順番を表す番号を記憶する。
【０１１５】
ここで、ＲＡＭ２２上に作成されたビットインデックス部テーブル３８について図１７に基づいて説明する。
図１７に示すように、ビットインデックス部テーブル３８は、「階乗個数」と、格納形式３のビットインデックス部を記憶する「インデックス内容」と、インデックス内容に記憶したビットインデックス部を識別する識別コードを記憶する「ビットインデックス番号」とから構成されている。尚、図１７においては、説明を簡単にするため、ビットインデックス部テーブル３８の「インデックス内容」に、６バイトのビット配列に替えて、「ビットインデックス部」のＯＮに設定された各ビットに対応する文字種類を記載している。
【０１１６】
従って、ビットインデックス部テーブル３８の「インデックス内容」には、格納形式３の「ビットインデックス部」のうち、２回以上使用されるビットインデックス部、又は、他のビットインデックス部の全ての文字種類を含んだビットインデックス部が記憶される。
【０１１７】
他方、上記Ｓ３１９で、統合カウントテーブル３７の「インデックス候補」に記憶されている全データについてＳ３２０以降の処理を実行したと判定した場合、つまり、ビットインデックス部テーブル３８の作成を終了した場合には（Ｓ３１９：ＹＥＳ）、ＣＰＵ２１は、作成したビットインデックス部テーブル３８を検索情報ＤＢ２８に格納した後、当該サブ処理を終了してメインフローチャートに戻る。
【０１１８】
尚、ＣＰＵ２１は、ビットインデックス部テーブル３８の「インデックス内容」を文字種類の少ない順、つまり、ＯＮに設定されたビット数の少ない順で、且つ、５０音順にソートした後、「ビットインデックス番号」に識別コードとして「１」から順番に番号を記憶した後、当該ビットインデックス部テーブル３８を検索情報ＤＢ２８に格納するようにしてもよい。
【０１１９】
［順列部テーブル作成処理］
次に、「順列部テーブル作成処理」のサブ処理について図１８乃至図２１に基づいて説明する。
図１８に示すように、Ｓ４１１において、ＣＰＵ２１は、上記Ｓ１１１の処理を実行する。そして、施設名データテーブル３１の「読み」から全てのキーワードを順番に読み出してＳ４１２以降の処理を実行していない、つまり、後述の順列部テーブル３９（図２１参照）を作成して検索情報ＤＢ２８に格納していないと判定した場合には（Ｓ４１１：ＮＯ）、ＣＰＵ２１は、Ｓ４１２の処理に移行する。
【０１２０】
Ｓ４１２において、ＣＰＵ２１は、上記Ｓ１１２の処理を実行する。そして、Ｓ４１３において、ＣＰＵ２１は、上記Ｓ１１３の処理を実行して、当該キーワードの文字列から順列部テーブル３９に記憶する際の格納形式１乃至格納形式３のそれぞれのデータを作成し（図６等参照）、各格納形式１〜３のデータサイズ（バイト数）を算出する。
【０１２１】
続いて、Ｓ４１４において、ＣＰＵ２１は、上記Ｓ１１４の処理を実行する。そして、当該キーワードの文字列を順列部テーブル３９に格納する格納形式２のデータサイズが、格納形式１及び格納形式３の各データサイズよりも少ないデータサイズであると判定した場合には（Ｓ４１４：ＹＥＳ）、ＣＰＵ２１は、Ｓ４１５の処理に移行する。Ｓ４１５において、ＣＰＵ２１は、「格納形式２の順列部作成処理」のサブ処理（図１９参照）を実行後、後述のＳ４１９の処理に移行する。
【０１２２】
一方、当該キーワードの文字列を順列部テーブル３９に格納する格納形式２のデータサイズが、格納形式１及び格納形式３の各データサイズよりも少ないデータサイズでないと判定した場合には（Ｓ４１４：ＮＯ）、ＣＰＵ２１は、Ｓ４１６の処理に移行する。Ｓ４１６において、ＣＰＵ２１は、上記Ｓ３１４の処理を実行する。
【０１２３】
そして、当該キーワードの文字列を順列部テーブル３９に格納する格納形式３のデータサイズが、格納形式１及び格納形式２の各データサイズよりも少ないデータサイズであると判定した場合には（Ｓ４１６：ＹＥＳ）、ＣＰＵ２１は、Ｓ４１７の処理に移行する。Ｓ４１７において、ＣＰＵ２１は、「格納形式３の順列部作成処理」のサブ処理（図２０参照）を実行後、後述のＳ４１９の処理に移行する。
【０１２４】
一方、当該キーワードの文字列を順列部テーブル３９に格納する格納形式３のデータサイズが、格納形式１及び格納形式２の各データサイズよりも少ないデータサイズでないと判定した場合には（Ｓ４１６：ＮＯ）、ＣＰＵ２１は、Ｓ４１８の処理に移行する。
【０１２５】
Ｓ４１８において、ＣＰＵ２１は、上記Ｓ４１２で読み出したキーワードの文字列から、順列部テーブル３９に記憶する際の「格納形式１」のデータを再度、作成する（図６等参照）。そして、ＣＰＵ２１は、この「格納形式１」のデータをＲＡＭ２２上に作成した順列部テーブル３９に記憶する。
【０１２６】
ここで、ＲＡＭ２２上に作成された順列部テーブル３９について図２１に基づいて説明する。図２１に示すように、順列部テーブル３９は、「文字数」、「格納形式」、「インデックス番号」、「順列部」、「該当件数」、「次文字」とから構成されている。この「文字数」には、キーワード（検索語）の文字数が記憶されている。また、「格納形式」には、キーワード（検索語）の文字列を「順列部」に記憶した格納形式が各格納形式１〜３のうちのいずれであるかを表す各番号「１」〜「３」が記憶される。
【０１２７】
また、「インデックス番号」には、キーワードの文字列から作成した格納形式２のデータの文字インデックス部が、文字インデックス部テーブル３５の「インデックス内容」に記憶されていれば、この「インデックス内容」に対応する「文字インデックス番号」が記憶されている。また、キーワードの文字列から作成した格納形式２のデータの文字インデックス部が、文字インデックス部テーブル３５の「インデックス内容」に記憶されていない場合には、格納形式２のデータの文字インデックス部が記憶されている。
【０１２８】
また、この「インデックス番号」には、格納形式３のデータのビットインデックス部が、ビットインデックス部テーブル３８の「インデックス内容」に記憶されていれば、この「インデックス内容」に対応する「ビットインデックス番号」が記憶されている。また、キーワードの文字列から作成した格納形式３のデータのビットインデックス部が、ビットインデックス部テーブル３８の「インデックス内容」に記憶されていない場合には、格納形式３のデータのビットインデックス部が記憶されている。
【０１２９】
例えば、格納形式２のデータの文字インデックス部「りを」が、文字インデックス部テーブル３５の「インデックス内容」に記憶されていない場合には、「インデックス番号」に、記憶されていない旨を表す「０：」と、この文字インデックス部「りを」が記憶されている。また、格納形式３のデータのビットインデックス部「いうかきくしとよん」が、ビットインデックス部テーブル３８の「インデックス内容」に記憶されていない場合には、「インデックス番号」に、記憶されていない旨を表す「０：」と、このビットインデックス部「いうかきくしとよん」が記憶されている。尚、図２１においては、説明を簡単にするため、順列部テーブル３６の「インデック番号」に記憶される、ビットインデックス部の６バイトのビット配列に替えて、ビットインデックス部のＯＮに設定された各ビットに対応する文字種類を記載している。
【０１３０】
また、「順列部」には、キーワード（検索語）の文字列から、「格納形式」に記憶された格納形式で作成したデータの順列部（図６等参照）が記憶されている。また、「該当件数」には、キーワード（検索語）と前方一致するキーワードを有する候補施設名の件数が記憶されている。尚、所定件数（本実施例では、例えば、１万件である。）よりも多い場合には、「所定件数以上」が記憶されている。また、「次文字」には、「順列部」に記憶されたキーワード（検索語）の文字列の次に選択して入力できる次文字が記憶されている。
【０１３１】
従って、図１８及び図２１に示すように、Ｓ４１８で、キーワードの文字列から作成した「格納形式１」のデータをＲＡＭ２２上に作成した順列部テーブル３９に記憶する場合には、ＣＰＵ２１は、この「格納形式１」のデータから、キーワードの文字列の文字数を１バイトで表した先頭の「文字数」を読み出し、順列部テーブル３９の「文字数」に記憶する。また、ＣＰＵ２１は、この「格納形式１」のデータから、この文字列の各文字を１バイトの文字コードで表した「順列部」を読み出し、順列部テーブル３９の当該「文字数」に対応する「順列部」に記憶する。
【０１３２】
また、ＣＰＵ２１は、順列テーブル３９の当該「文字数」に対応する「格納形式」に、「格納形式１」のデータの「順列部」を記憶する旨を表す「１」を記憶する。従って、順列テーブル３９の当該「文字数」に対応する「インデックス番号」には、データは記憶されない。
【０１３３】
続いて、Ｓ４１９において、ＣＰＵ２１は、施設名ＤＢ２７に格納された施設名データテーブル３１から、「読み」に記憶された施設名の読みを順番に読み出し、上記Ｓ４１２で読み出した当該キーワードと前方一致するキーワードを有する施設名の読みをカウントする。
【０１３４】
そして、ＣＰＵ２１は、このカウント値が所定件数以下（本実施例では、例えば、１万件以下である。）の場合には、このカウント値を当該キーワードと前方一致するキーワードを有する候補施設名の件数として、順列部テーブル３９の「順列部」に記憶した最新の順列部に対応する「該当件数」に記憶する。また、ＣＰＵ２１は、このカウント値が所定件数よりも多い場合には、「所定件数以上」を順列部テーブル３９の「順列部」に記憶した最新の順列部に対応する「該当件数」に記憶する。
【０１３５】
その後、Ｓ４２０において、ＣＰＵ２１は、施設名ＤＢ２７に格納された施設名データテーブル３１から、「読み」に記憶された施設名の読みを順番に読み出し、上記Ｓ４１２で読み出した当該キーワードと前方一致するキーワードを有する施設名の読みがある場合には、この前方一致するキーワードの文字列から当該キーワードの次の文字を抽出して、ＲＡＭ２２に記憶する。
【０１３６】
そして、ＣＰＵ２１は、この抽出した当該キーワードの次の文字を構成する５０音の文字種類を、当該キーワードの文字列の次に選択して入力できる次文字として、順列部テーブル３９の「順列部」に記憶した最新の順列部に対応する「次文字」に記憶した後、再度、Ｓ４１１以降の処理を実行する。
【０１３７】
他方、上記Ｓ４１１で、施設名データテーブル３１の「読み」から全てのキーワードを順番に読み出してＳ４１２以降の処理を実行したと判定した場合、つまり、順列部テーブル３９の作成を終了した場合には（Ｓ４１１：ＹＥＳ）、ＣＰＵ２１は、作成した順列部テーブル３９を検索情報ＤＢ２８に格納した後、当該サブ処理を終了してメインフローチャートに戻り、当該処理を終了する。尚、ＣＰＵ２１は、順列テーブル３９に記憶されたデータを「文字数」の少ない順にソートした後、検索情報ＤＢ２８に格納するようにしてもよい。
【０１３８】
［格納形式２の順列部作成処理］
次に、上記Ｓ４１５で実行する「格納形式２の順列部作成処理」のサブ処理について図１９に基づいて説明する。
図１９に示すように、Ｓ５１１において、ＣＰＵ２１は、上記Ｓ４１２で読み出したキーワードの文字列から、順列部テーブル３９に記憶する際の「格納形式２」のデータ（図６等参照）を再度、作成する。そして、ＣＰＵ２１は、この「格納形式２」のデータから文字インデックス部を読み出す。
【０１３９】
続いて、Ｓ５１２において、ＣＰＵ２１は、当該文字インデックス部が文字インデックス部テーブル３５の「インデックス内容」に記憶されているか否かを判定する判定処理を実行する。そして、当該文字インデックス部が文字インデックス部テーブル３５の「インデックス内容」に記憶されていると判定した場合には（Ｓ５１２：ＹＥＳ）、ＣＰＵ２１は、Ｓ５１３の処理に移行する。
【０１４０】
Ｓ５１３において、ＣＰＵ２１は、文字インデックス部テーブル３５から、当該文字インデックス部が記憶されている「インデックス内容」に対応する「文字インデックス番号」を読み出し、順列部テーブル３９の「インデックス番号」に記憶した後、後述のＳ５１５の処理に移行する。
【０１４１】
一方、当該文字インデックス部が文字インデックス部テーブル３５の「インデックス内容」に記憶されていないと判定した場合には（Ｓ５１２：ＮＯ）、ＣＰＵ２１は、Ｓ５１４の処理に移行する。Ｓ５１４において、ＣＰＵ２１は、当該文字インデックス部が文字インデックス部テーブル３５の「インデックス内容」に記憶されていない旨を表す「０：」と、当該キーワードの文字列を構成する各文字種類を１バイトの文字コードで表した当該文字インデックス部と、を順列部テーブル３９の「インデックス番号」に記憶する。
【０１４２】
そして、Ｓ５１５において、当該キーワードの文字列から作成した「格納形式２」のデータからキーワードの文字列の文字数を１バイトで表した先頭の「文字数」を読み出し、順列部テーブル３９の「文字数」に記憶する。また、ＣＰＵ２１は、この「格納形式２」のデータから、順列部を読み出し、順列部テーブル３９の当該「文字数」に対応する「順列部」に記憶する。
【０１４３】
また、ＣＰＵ２１は、順列テーブル３９の当該「文字数」に対応する「格納形式」に、「格納形式２」のデータの「順列部」を記憶する旨を表す「２」を記憶した後、当該サブ処理を終了して、順列部テーブル作成処理のサブ処理に戻り、Ｓ４１９の処理に移行する。
【０１４４】
［格納形式３の順列部作成処理］
次に、上記Ｓ４１７で実行する「格納形式３の順列部作成処理」のサブ処理について図２０に基づいて説明する。
図２０に示すように、Ｓ６１１において、ＣＰＵ２１は、上記Ｓ４１２で読み出したキーワードの文字列から、順列部テーブル３９に記憶する際の「格納形式３」のデータ（図６等参照）を再度、作成する。そして、ＣＰＵ２１は、この「格納形式３」のデータからビットインデックス部を読み出す。
【０１４５】
続いて、Ｓ６１２において、ＣＰＵ２１は、当該ビットインデックス部がビットインデックス部テーブル３８の「インデックス内容」に記憶されているか否かを判定する判定処理を実行する。そして、当該ビットインデックス部がビットインデックス部テーブル３８の「インデックス内容」に記憶されていると判定した場合には（Ｓ６１２：ＹＥＳ）、ＣＰＵ２１は、Ｓ６１３の処理に移行する。
【０１４６】
Ｓ６１３において、ＣＰＵ２１は、ビットインデックス部テーブル３８から、当該ビットインデックス部が記憶されている「インデックス内容」に対応する「ビットインデックス番号」を読み出し、順列部テーブル３９の「インデックス番号」に記憶した後、後述のＳ６１５の処理に移行する。
【０１４７】
一方、当該ビットインデックス部がビットインデックス部テーブル３８の「インデックス内容」に記憶されていないと判定した場合には（Ｓ６１２：ＮＯ）、ＣＰＵ２１は、Ｓ６１４の処理に移行する。Ｓ６１４において、ＣＰＵ２１は、当該ビットインデックス部がビットインデックス部テーブル３８の「インデックス内容」に記憶されていない旨を表す「０：」と、当該キーワードの文字列を構成する各文字種類に対応するビットをＯＮに設定し、それ以外のビットをＯＦＦに設定した６バイトの当該ビットインデックス部と、を順列部テーブル３９の「インデックス番号」に記憶する。
【０１４８】
そして、Ｓ６１５において、当該キーワードの文字列から作成した「格納形式３」のデータからキーワードの文字列の文字数を１バイトで表した先頭の「文字数」を読み出し、順列部テーブル３９の「文字数」に記憶する。また、ＣＰＵ２１は、この「格納形式３」のデータから、順列部を読み出し、順列部テーブル３９の当該「文字数」に対応する「順列部」に記憶する。
【０１４９】
また、ＣＰＵ２１は、順列テーブル３９の当該「文字数」に対応する「格納形式」に、「格納形式３」のデータの「順列部」を記憶する旨を表す「３」を記憶した後、当該サブ処理を終了して、順列部テーブル作成処理のサブ処理に戻り、Ｓ４１９の処理に移行する。
【０１５０】
［ナビゲーション装置での使用例］
次に、ナビゲーション装置２が検索語入力画面８１（図２８参照）を介して検索語を入力された場合に、情報作成装置１からネットワーク４を介して配信された階乗個数テーブル３２、文字インデックス部テーブル３５、ビットインデックス部テーブル３８、順列部テーブル３９等を使用した一例について図２２乃至図２８に基づいて説明する。
【０１５１】
［ナビゲーション装置の概略構成］
【０１５２】
次に、ナビゲーション装置２の概略構成について図２２を用いて説明する。図２２は本実施例に係るナビゲーション装置２を示したブロック図である。
【０１５３】
図２２に示すように、本実施例に係るナビゲーション装置２は、自車の現在位置（以下、「自車位置」という。）を検出する現在地検出処理部４１と、各種のデータが記録されたデータ記録部４２と、入力された情報に基づいて、各種の演算処理を行うナビゲーション制御部４３と、操作者からの操作を受け付ける操作部４４と、操作者に対して地図等の情報を表示する液晶ディスプレイ（ＬＣＤ）４５と、経路案内に関する音声ガイダンスを出力するスピーカ４６と、情報作成装置１や不図示の道路交通情報センタ等との間で携帯電話網等を介して通信を行う通信装置４７とから構成されている。また、ナビゲーション制御部４３には自車両の走行速度を検出する車速センサ４８が接続されている。
【０１５４】
以下に、ナビゲーション装置２を構成する各構成要素について説明すると、現在地検出処理部４１は、ＧＰＳ６１、方位センサ６２、距離センサ６３等からなり、自車位置、自車方位、走行距離等を検出することが可能となっている。
【０１５５】
また、データ記録部４２は、外部記憶装置及び記憶媒体としてのハードディスク（図示せず）と、ハードディスクに記憶されたナビ側地図情報データベース（ナビ側地図情報ＤＢ）５１、ナビ側施設名データベース（ナビ側施設名ＤＢ）５３、ナビ側検索情報データベース（ナビ側検索情報ＤＢ）５４とを備えている。
【０１５６】
ナビ側地図情報ＤＢ５１には、ナビゲーション装置２の走行案内や経路探索に使用されるナビ地図情報５２が格納されている。また、ナビ側施設名ＤＢ５３には、情報作成装置１からネットワーク４を介して配信された施設名データテーブル３１等が格納されている。また、ナビ側検索情報ＤＢ５４には、情報作成装置１からネットワーク４を介して配信された階乗個数テーブル３２、文字インデックス部テーブル３５、ビットインデックス部テーブル３８、順列部テーブル３９等が格納されている。
【０１５７】
ここで、ナビ地図情報５２は、経路案内及び地図表示に必要な各種情報から構成されており、例えば、各新設道路を特定するための新設道路情報、地図を表示するための地図表示データ、各交差点に関する交差点データ、ノード点に関するノードデータ、道路（リンク）に関するリンクデータ、経路を探索するための探索データ、施設の一種である店舗等のＰＯＩ（Point of Interest）に関する施設データ、地点を検索するための検索データ等から構成されている。
【０１５８】
そして、ナビ側地図情報ＤＢ５１の内容は、不図示の地図情報配信センタから通信装置４７を介して配信された更新情報をダウンロードすることによって更新される。また、ナビ側施設名ＤＢ５３に格納される施設名データテーブル３１と、ナビ側検索情報ＤＢ５４に格納される階乗個数テーブル３２、文字インデックス部テーブル３５、ビットインデックス部テーブル３８、順列部テーブル３９は、情報作成装置１から通信装置４７を介して配信された更新情報をダウンロードすることによって更新される。
【０１５９】
また、図２２に示すように、ナビゲーション装置２を構成するナビゲーション制御部４３は、ナビゲーション装置２の全体の制御を行う演算装置及び制御装置としてのＣＰＵ７１、並びにＣＰＵ７１が各種の演算処理を行うに当たってワーキングメモリとして使用されるとともに、経路が探索されたときの経路データ等が記憶されるＲＡＭ７２、制御用のプログラム等が記憶されたＲＯＭ７３、ＲＯＭ７３から読み出したプログラムを記憶するフラッシュメモリ７４等の内部記憶装置や、時間を計測するタイマ７５等を備えている。
【０１６０】
また、ＲＯＭ７３には、後述の入力された検索語に基づいて該当件数と検索語の次に選択することが可能な次文字を取得する検索補助情報取得処理（図２３〜図２５参照）等のプログラムが記憶されている。
更に、ナビゲーション制御部４３には、操作部４４、液晶ディスプレイ４５、スピーカ４６、通信装置４７の各周辺装置（アクチュエータ）が電気的に接続されている。
【０１６１】
この操作部４４は、走行開始時の現在位置を修正し、案内開始地点としての出発地及び案内終了地点としての目的地を入力する際や施設に関する情報の検索を行う場合等に操作され、各種のキーや複数の操作スイッチから構成される。そして、ナビゲーション制御部４３は、各スイッチの押下等により出力されるスイッチ信号に基づき、対応する各種の動作を実行すべく制御を行う。
【０１６２】
また、液晶ディスプレイ４５には、現在走行中の地図情報、目的地周辺の地図情報、操作案内、操作メニュー、キーの案内、現在地から目的地までの推奨経路、推奨経路に沿った案内情報、交通情報、ニュース、天気予報、時刻、メール、テレビ番組等が表示される。
【０１６３】
また、スピーカ４６は、ナビゲーション制御部４３からの指示に基づいて、推奨経路に沿った走行を案内する音声ガイダンス等を出力する。ここで、案内される音声ガイダンスとしては、例えば、「２００ｍ先、○○交差点を右方向です。」等がある。
【０１６４】
また、通信装置４７は、情報作成装置１や地図情報配信センタと通信を行う携帯電話網等による通信手段であり、更新情報や更新地図情報等の送受信を行う。また、通信装置４７は地図情報配信センタに加えて、道路交通情報センタ等から送信された渋滞情報やサービスエリアの混雑状況等の各情報から成る交通情報を受信する。
【０１６５】
［検索補助情報取得処理］
次に、上記のように構成されたナビゲーション装置１のＣＰＵ７１が実行する処理であって、入力された検索語に基づいて該当件数と検索語の次に選択することが可能な次文字を取得する「検索補助情報取得処理」について図２３乃至図２８に基づいて説明する。尚、図２３乃至図２５にフローチャートで示されるプログラムは、操作部１４の不図示の目的地設定ボタンが押下された場合に、ＣＰＵ７１により実行される。
【０１６６】
図２３乃至図２５に示すように、Ｓ７１１において、ＣＰＵ７１は、液晶ディスプレイ４５の画面に、地点情報として目的地の住所や施設に関する名称等を検索するための検索語を入力する検索語入力画面８１を表示する。
【０１６７】
ここで、検索語入力画面８１の一例について図２８に基づいて説明する。
図２８に示すように、検索語入力画面８１には、５０音キー８２、入力文字表示部８３、修正ボタン８６、件数表示部８７、戻るボタン８８、完了ボタン８９が表示される。
【０１６８】
この入力文字表示部８３には、５０音キー８２によって入力された入力文字が表示される。また、修正ボタン８６を押下する毎に、入力文字表示部８３に表示されている文字列の最終入力文字を１文字ずつ削除することができる。また、戻るボタン８８を押下することによって、検索語入力画面８１の前の画面に戻すことができる。
【０１６９】
また、件数表示部８７には、後述のように入力文字表示部８３に表示される文字列と前方一致するキーワードを有する施設名の件数が表示される。更に、完了ボタン８９を押下することによって、入力文字表示部８３に表示されている文字列を検索語として、地点情報としての施設に関する名称等を検索してリスト表示するように指示することができる。
【０１７０】
続いて、図２３に示すように、Ｓ７１２において、ＣＰＵ７１は、５０音キー８２から入力された入力文字を入力文字表示部８３に表示すると共に、入力文字表示部８３に表示している文字列を検索語としてＲＡＭ７２に記憶する。
【０１７１】
そして、Ｓ７１３において、ＣＰＵ７１は、検索語をＲＡＭ７２から読み出し、当該検索語の文字列の文字種類の種類数を算出し、当該検索語に対応させてＲＡＭ７２に記憶する。例えば、検索語が７文字の「かききかききき」の場合には、ＣＰＵ７１は、検索語の文字列の文字種類が「か」、「き」から種類数「２」を算出し、当該検索語に対応させてＲＡＭ７２に記憶する。
【０１７２】
続いて、Ｓ７１４において、ＣＰＵ７１は、「文字インデックス番号取得処理」のサブ処理を実行する。ここで、「文字インデックス番号取得処理」のサブ処理について図２６に基づいて説明する。
【０１７３】
［文字インデックス番号取得処理］
図２６に示すように、Ｓ８１１において、ＣＰＵ７１は、当該検索語に対応させて記憶した文字種類の種類数をＲＡＭ７２から読み出す。そして、ＣＰＵ７１は、この文字種類の種類数をナビ側検索情報ＤＢ５４に格納された階乗個数テーブル３２の「文字の種類」として、この「文字の種類」に対応する「階乗個数」を読み出し、ＲＡＭ７２に記憶する。例えば、種類数が「２」の場合には、ＣＰＵ７１は、階乗個数テーブル３２の「文字の種類」「２」に対応する「階乗個数」として「２」を読み出し、ＲＡＭ７２に記憶する。
【０１７４】
そして、Ｓ８１２において、ＣＰＵ７１は、上記Ｓ８１１で記憶した「階乗個数」をナビ側検索情報ＤＢ５４に格納された文字インデックス部テーブル３５の「階乗個数」として、この「階乗個数」に対応する「インデックス内容」と「文字インデックス番号」とを文字インデックス部テーブル３５から全て読み出して、それぞれ対応させてＲＡＭ７２に記憶する。例えば、上記Ｓ８１１で記憶した「階乗個数」が「２」の場合には、文字インデックス部テーブル３５の「階乗個数」が「２」の「インデックス内容」の「かき」、「かく」、・・・と「文字インデックス番号」の「１」、「２」、・・・とを全て読み出して、それぞれ対応させてＲＡＭ７２に記憶する。
【０１７５】
続いて、Ｓ８１３において、ＣＰＵ７１は、ＲＡＭ７２に記憶した「インデックス内容」から全ての文字種類の組み合わせ、つまり、全ての１バイトの文字コードの組み合わせを順番に読み出してＳ８１４以降の処理を実行したか否かを判定する判定処理を実行する。
そして、ＲＡＭ７２に記憶した「インデックス内容」から全ての文字種類の組み合わせを順番に読み出してＳ８１４以降の処理を実行していないと判定した場合には（Ｓ８１３：ＮＯ）、ＣＰＵ７１は、Ｓ８１４の処理に移行する。
【０１７６】
Ｓ８１４において、ＣＰＵ７１は、ＲＡＭ７２に記憶した「インデックス内容」から残っている次の文字種類の組み合わせを読み出して、ＲＡＭ７２に記憶する。
続いて、Ｓ８１５において、ＣＰＵ７１は、当該検索語の文字種類をＲＡＭ７２から読み出し、「インデックス内容」から読み出した次の文字種類が、当該検索語の文字種類を全て含むか否かを判定する判定処理を実行する。
【０１７７】
そして、「インデックス内容」から読み出した次の文字種類が、当該検索語の文字種類を全て含むと判定した場合には（Ｓ８１５：ＹＥＳ）、ＣＰＵ７１は、Ｓ８１６の処理に移行する。Ｓ８１６において、ＣＰＵ７１は、この「インデックス内容」に対応してＲＡＭ７２に記憶した「文字インデックス番号」の識別コードを順列部テーブル３９の「インデックス番号」としてＲＡＭ７２に記憶する。
【０１７８】
また、ＣＰＵ７１は、文字インデックス番号フラグをＲＡＭ７２から読み出し、この文字インデックス番号フラグをＯＮに設定して、再度ＲＡＭ７２に記憶した後、当該サブ処理を終了してメインフローチャートに戻り、Ｓ７１５の処理に移行する。尚、ナビゲーション装置２の起動時には、文字インデックス番号フラグは、ＯＦＦに設定されてＲＡＭ７２に記憶されている。
【０１７９】
一方、「インデックス内容」から読み出した次の文字種類が、当該検索語の文字種類を全て含んでいないと判定した場合には（Ｓ８１５：ＮＯ）、ＣＰＵ７１は、再度Ｓ８１３以降の処理を実行する。
そして、Ｓ８１３において、ＲＡＭ７２に記憶した「インデックス内容」から全ての文字種類の組み合わせを順番に読み出してＳ８１４以降の処理を実行したと判定した場合には（Ｓ８１３：ＹＥＳ）、ＣＰＵ７１は、Ｓ８１７の処理に移行する。
【０１８０】
Ｓ８１７において、ＣＰＵ７１は、ナビ側検索情報ＤＢ５４に格納されている文字インデックス部テーブル３５には、当該検索語の文字列に対応する「文字インデックス番号」の識別コードが「無い」旨を記憶する。つまり、ＣＰＵ７１は、文字インデックス番号フラグをＲＡＭ７２から読み出し、この文字インデックス番号フラグをＯＦＦに設定して、再度ＲＡＭ７２に記憶した後、当該サブ処理を終了してメインフローチャートに戻り、Ｓ７１５の処理に移行する。
【０１８１】
続いて、図２３に示すように、Ｓ７１５において、ＣＰＵ７１は、「ビットインデックス番号取得処理」のサブ処理を実行する。ここで、「ビットインデックス番号取得処理」のサブ処理について図２７に基づいて説明する。
【０１８２】
［ビットインデックス番号取得処理］
図２７に示すように、Ｓ９１１において、ＣＰＵ７１は、当該検索語に対応させて記憶した文字種類の種類数をＲＡＭ７２から読み出す。そして、ＣＰＵ７１は、この文字種類の種類数をナビ側検索情報ＤＢ５４に格納された階乗個数テーブル３２の「文字の種類」として、この「文字の種類」に対応する「階乗個数」を読み出し、ＲＡＭ７２に記憶する。例えば、種類数が「６」の場合には、ＣＰＵ７１は、階乗個数テーブル３２の「文字の種類」「６」に対応する「階乗個数」として「８」を読み出し、ＲＡＭ７２に記憶する。
【０１８３】
そして、Ｓ９１２において、ＣＰＵ７１は、上記Ｓ９１１で記憶した「階乗個数」をナビ側検索情報ＤＢ５４に格納されたビットインデックス部テーブル３８の「階乗個数」として、この「階乗個数」に対応する「インデックス内容」の６バイトのビット配列と「ビットインデックス番号」とをビットインデックス部テーブル３８から全て読み出して、それぞれ対応させてＲＡＭ７２に記憶する。例えば、上記Ｓ９１１で記憶した「階乗個数」が「８」の場合には、ビットインデックス部テーブル３８の「階乗個数」が「８」の「インデックス内容」の「うかきくふる」、・・・と「ビットインデックス番号」の「１」、・・・とを読み出して、それぞれ対応させてＲＡＭ７２に記憶する。
【０１８４】
続いて、Ｓ９１３において、ＣＰＵ７１は、ＲＡＭ７２に記憶した「インデックス内容」から全ての文字種類の組み合わせ、つまり、全ての６バイトのビット配列を順番に読み出してＳ９１４以降の処理を実行したか否かを判定する判定処理を実行する。
そして、ＲＡＭ７２に記憶した「インデックス内容」から全ての文字種類の組み合わせを順番に読み出してＳ９１４以降の処理を実行していないと判定した場合には（Ｓ９１３：ＮＯ）、ＣＰＵ７１は、Ｓ９１４の処理に移行する。
【０１８５】
Ｓ９１４において、ＣＰＵ７１は、ＲＡＭ７２に記憶した「インデックス内容」から残っている次の文字種類の組み合わせ、つまり、次の６バイトのビット配列を読み出して、ＲＡＭ７２に記憶する。
続いて、Ｓ９１５において、ＣＰＵ７１は、当該検索語の文字種類をＲＡＭ７２から読み出し、「インデックス内容」から読み出した次の文字種類が、当該検索語の文字種類を全て含むか否か、つまり、当該検索語の文字種類に対応する全ビットがＯＮに設定されているか否かを判定する判定処理を実行する。
【０１８６】
そして、「インデックス内容」から読み出した次の文字種類が、当該検索語の文字種類を全て含む、つまり、当該検索語の文字種類に対応する全ビットがＯＮに設定されていると判定した場合には（Ｓ９１５：ＹＥＳ）、ＣＰＵ７１は、Ｓ９１６の処理に移行する。Ｓ９１６において、ＣＰＵ７１は、この「インデックス内容」に対応してＲＡＭ７２に記憶した「ビットインデックス番号」の識別コードを順列部テーブル３９の「インデックス番号」としてＲＡＭ７２に記憶する。
【０１８７】
また、ＣＰＵ７１は、ビットインデックス番号フラグをＲＡＭ７２から読み出し、このビットインデックス番号フラグをＯＮに設定して、再度ＲＡＭ７２に記憶した後、当該サブ処理を終了してメインフローチャートに戻り、Ｓ７１６の処理に移行する。尚、ナビゲーション装置２の起動時には、ビットインデックス番号フラグは、ＯＦＦに設定されてＲＡＭ７２に記憶されている。
【０１８８】
一方、「インデックス内容」から読み出した次の文字種類が、当該検索語の文字種類を全て含んでいない、つまり、当該検索語の文字種類に対応する全ビットがＯＮに設定されていないと判定した場合には（Ｓ９１５：ＮＯ）、ＣＰＵ７１は、再度Ｓ９１３以降の処理を実行する。
そして、Ｓ９１３において、ＲＡＭ７２に記憶した「インデックス内容」から全ての文字種類の組み合わせ、つまり、全ての６バイトのビット配列を順番に読み出してＳ９１４以降の処理を実行したと判定した場合には（Ｓ９１３：ＹＥＳ）、ＣＰＵ７１は、Ｓ９１７の処理に移行する。
【０１８９】
Ｓ９１７において、ＣＰＵ７１は、ナビ側検索情報ＤＢ５４に格納されているビットインデックス部テーブル３８には、当該検索語の文字列に対応する「ビットインデックス番号」の識別コードが「無い」旨を記憶する。つまり、ＣＰＵ７１は、ビットインデックス番号フラグをＲＡＭ７２から読み出し、このビットインデックス番号フラグをＯＦＦに設定して、再度ＲＡＭ７２に記憶した後、当該サブ処理を終了してメインフローチャートに戻り、Ｓ７１６の処理に移行する。
【０１９０】
続いて、図２３に示すように、Ｓ７１６において、ＣＰＵ７１は、ＲＡＭ７２から当該検索語を読み出し、文字数をカウントする。
そして、Ｓ７１７において、ＣＰＵ７１は、ナビ側検索情報ＤＢ５４に格納した順列部テーブル３９から、当該検索語の文字数のカウント値が記憶されている「文字数」に対応する「格納形式」、「インデックス番号」、「順列部」、「該当件数」、「次文字」の各データを１組のデータとして順番に読み出し、各組毎に相互に対応させてＲＡＭ７２に記憶する。
【０１９１】
そして、Ｓ７１８において、ＣＰＵ７１は、当該検索語の文字列を順列テーブル３９に記憶する際の格納形式１乃至格納形式３のそれぞれで表した場合について（図６等参照）、各格納形式１〜３のデータサイズ（バイト数）を算出する。
続いて、Ｓ７１９において、ＣＰＵ７１は、当該検索語の文字列を順列テーブル３９に記憶する格納形式２のデータサイズが、格納形式１及び格納形式３の各データサイズよりも少ないデータサイズか否かを判定する判定処理を実行する。
【０１９２】
そして、当該キーワードの文字列を順列部テーブル３９に格納する格納形式２のデータサイズが、格納形式１及び格納形式３の各データサイズよりも少ないデータサイズでないと判定した場合には（Ｓ７１９：ＮＯ）、ＣＰＵ７１は、Ｓ７２０の処理に移行する。Ｓ７２０において、ＣＰＵ７１は、当該検索語の文字列を順列テーブル３９に記憶する格納形式３のデータサイズが、格納形式１及び格納形式２の各データサイズよりも少ないデータサイズか否かを判定する判定処理を実行する。
【０１９３】
そして、当該検索語の文字列を順列部テーブル３９に格納する格納形式３のデータサイズが、格納形式１及び格納形式２の各データサイズよりも少ないデータサイズでないと判定した場合には（Ｓ７２０：ＮＯ）、ＣＰＵ７１は、Ｓ７２１の処理に移行する。Ｓ７２１において、ＣＰＵ７１は、上記Ｓ７１７でＲＡＭに記憶した当該検索語の文字数のカウント値が記憶されている「文字数」に対応する各「順列部」のうちに、当該検索語の文字列の各文字を１バイトの文字コードで表した「格納形式１の順列部」と一致するものがあるか否かを判定する判定処理を実行する。
【０１９４】
そして、上記Ｓ７１７でＲＡＭに記憶した当該検索語の文字数のカウント値が記憶されている「文字数」に対応する各「順列部」のうちに、当該検索語の文字列の各文字を１バイトの文字コードで表した「格納形式１の順列部」と一致するものがあると判定した場合には（Ｓ７２１：ＹＥＳ）、ＣＰＵ７１は、Ｓ７２２の処理に移行する。Ｓ７２２において、ＣＰＵ７１は、当該検索語の文字列の各文字を１バイトの文字コードで表した「格納形式１の順列部」と一致する「順列部」に対応付けて記憶されている「該当件数」と「次文字」の各データをＲＡＭ７２から読み出す。
【０１９５】
続いて、Ｓ７２３において、ＣＰＵ７１は、この読み出した「該当件数」を検索語入力画面８１の件数表示部８７に表示する。また、ＣＰＵ７１は、この読み出した「次文字」のデータに該当しない５０音の文字を検索語の次に入力できない文字として抽出する。そして、ＣＰＵ７１は、これら入力できない文字に対応する５０音キー８２の文字ボタンの枠や枠内の文字を灰色等や透明度を高くし、通常表示状態よりトーンダウンして表示後、当該処理を終了する。
【０１９６】
一方、上記Ｓ７１７でＲＡＭに記憶した当該検索語の文字数のカウント値が記憶されている「文字数」に対応する各「順列部」のうちに、当該検索語の文字列の各文字を１バイトの文字コードで表した「格納形式１の順列部」と一致するものが無いと判定した場合には（Ｓ７２１：ＮＯ）、ＣＰＵ７１は、検索語入力画面８１の件数表示部８７に、候補施設名が無い旨を表す「該当件数：無し」を表示した後、当該処理を終了する。
【０１９７】
［格納形式２の場合］
他方、上記Ｓ７１９で、ＣＰＵ７１は、当該検索語の文字列を順列部テーブル３９に格納する格納形式２のデータサイズが、格納形式１及び格納形式３の各データサイズよりも少ないデータサイズであると判定した場合には（Ｓ７１９：ＹＥＳ）、ＣＰＵ２１は、Ｓ７２４の処理に移行する。
【０１９８】
図２４に示すように、Ｓ７２４において、ＣＰＵ７１は、「文字インデックス番号」の識別コードを順列部テーブル３９の「インデックス番号」としてＲＡＭ７２に記憶しているか否かを判定する判定処理を実行する。具体的には、ＣＰＵ７１は、文字インデックス番号フラグをＲＡＭ７２から読み出し、ＯＮに設定されているか否かを判定する判定処理を実行する。
【０１９９】
そして、「文字インデックス番号」の識別コードを順列部テーブル３９の「インデックス番号」としてＲＡＭ７２に記憶していると判定した場合、つまり、文字インデックス番号フラグがＯＮに設定されていると判定した場合には（Ｓ７２４：ＹＥＳ）、ＣＰＵ７１は、Ｓ７２５の処理に移行する。Ｓ７２５において、ＣＰＵ７１は、上記７１７でＲＡＭに記憶した「格納形式」が「２」に対応する「インデックス番号」に、当該「文字インデックス番号」の識別コードが記憶されているか否かを判定する判定処理を実行する。
【０２００】
そして、上記７１７でＲＡＭに記憶した「格納形式」が「２」に対応する「インデックス番号」に、当該「文字インデックス番号」の識別コードが記憶されていないと判定した場合には（Ｓ７２５：ＮＯ）、ＣＰＵ７１は、検索語入力画面８１の件数表示部８７に、候補施設名が無い旨を表す「該当件数：無し」を表示した後、当該処理を終了する。
一方、上記７１７でＲＡＭに記憶した「格納形式」が「２」に対応する「インデックス番号」に、当該「文字インデックス番号」の識別コードが記憶されていると判定した場合には（Ｓ７２５：ＹＥＳ）、ＣＰＵ７１は、後述のＳ７２７の処理に移行する。
【０２０１】
他方、「文字インデックス番号」の識別コードを順列部テーブル３９の「インデックス番号」としてＲＡＭ７２に記憶していないと判定した場合、つまり、文字インデックス番号フラグがＯＦＦに設定されていると判定した場合には（Ｓ７２４：ＮＯ）、ＣＰＵ７１は、Ｓ７２６の処理に移行する。Ｓ７２６において、ＣＰＵ７１は、当該検索語の文字列から「格納形式２」の「文字インデックス部」を作成した後、Ｓ７２５の処理に移行する。つまり、ＣＰＵ７１は、当該検索語の文字列を構成する各文字種類を１バイトの文字コードで表した「文字インデックス部」を作成した後、Ｓ７２５の処理に移行する。
【０２０２】
続いて、Ｓ７２５において、ＣＰＵ７１は、上記７１７でＲＡＭに記憶した「格納形式」が「２」に対応する「インデックス番号」に、当該検索語の文字列から作成した「格納形式２」の「文字インデックス部」が記憶されているか否かを判定する判定処理を実行する。
そして、上記７１７でＲＡＭに記憶した「格納形式」が「２」に対応する「インデックス番号」に、当該検索語の文字列から作成した「格納形式２」の「文字インデックス部」が記憶されていないと判定した場合には（Ｓ７２５：ＮＯ）、ＣＰＵ７１は、検索語入力画面８１の件数表示部８７に、候補施設名が無い旨を表す「該当件数：無し」を表示した後、当該処理を終了する。
【０２０３】
一方、上記７１７でＲＡＭに記憶した「格納形式」が「２」に対応する「インデックス番号」に、当該検索語の文字列から作成した「格納形式２」の「文字インデックス部」が記憶されていると判定した場合には（Ｓ７２５：ＹＥＳ）、ＣＰＵ７１は、Ｓ７２７の処理に移行する。Ｓ７２７において、ＣＰＵ７１は、当該検索語の文字列から「格納形式２」の「順列部」を作成する。つまり、ＣＰＵ７１は、検索語の文字列の各文字を、「格納形式２」の「文字インデックス部」を構成する文字種類中での順番を示すことができるビット数の数値で各文字の順番を表した「順列部」を作成してＲＡＭ７２に記憶する。
【０２０４】
続いて、Ｓ７２８において、ＣＰＵ７１は、上記Ｓ７１７でＲＡＭに記憶した「格納形式」が「２」に対応する「インデックス番号」のうち、当該「文字インデックス番号」の識別コード、又は、当該検索語の文字列から作成した「格納形式２」の「文字インデックス部」が記憶されている「インデックス番号」に対応する全ての「順列部」についてＳ７２９以降の処理を実行したか否かを判定する判定処理を実行する。
【０２０５】
そして、当該「文字インデックス番号」の識別コード、又は、当該検索語の文字列から作成した「格納形式２」の「文字インデックス部」が記憶されている「インデックス番号」に対応する全ての「順列部」についてＳ７２９以降の処理を実行したと判定した場合には（Ｓ７２８：ＹＥＳ）、ＣＰＵ７１は、検索語入力画面８１の件数表示部８７に、候補施設名が無い旨を表す「該当件数：無し」を表示した後、当該処理を終了する。
【０２０６】
一方、当該「文字インデックス番号」の識別コード、又は、当該検索語の文字列から作成した「格納形式２」の「文字インデックス部」が記憶されている「インデックス番号」に対応する全ての「順列部」についてＳ７２９以降の処理を実行していないと判定した場合には（Ｓ７２８：ＮＯ）、ＣＰＵ７１は、Ｓ７２９の処理に移行する。Ｓ７２９において、ＣＰＵ７１は、当該「文字インデックス番号」の識別コード、又は、当該検索語の文字列から作成した「格納形式２」の「文字インデックス部」が記憶されている「インデックス番号」に対応する全ての「順列部」のうち、残っている次の「順列部」を読み出す。
【０２０７】
続いて、Ｓ７３０において、ＣＰＵ７１は、この読み出した「順列部」と上記Ｓ７２７で検索語の文字列から作成した「順列部」とが一致するか否かを判定する判定処理を実行する。そして、この読み出した「順列部」と上記Ｓ７２７で検索語の文字列から作成した「順列部」とが一致していないと判定した場合には（Ｓ７３０：ＮＯ）、ＣＰＵ７１は、再度Ｓ７２８以降の処理を実行する。
【０２０８】
一方、この読み出した「順列部」と上記Ｓ７２７で検索語の文字列から作成した「順列部」とが一致すると判定した場合には（Ｓ７３０：ＹＥＳ）、ＣＰＵ７１は、Ｓ７３１の処理に移行する。Ｓ７３１において、ＣＰＵ７１は、上記Ｓ７１７で記憶した「格納形式」、「インデックス番号」、「順列部」、「該当件数」、「次文字」の各データから、この読み出した「順列部」に対応付けて記憶されている「該当件数」と「次文字」の各データをＲＡＭ７２から読み出す。
そして、Ｓ７３２において、ＣＰＵ７１は、上記Ｓ７２３の処理を実行した後、当該処理を終了する。
【０２０９】
例えば、図２８に示すよう、検索語入力画面８１において、「かかかか」の検索語が入力された場合には、ＣＰＵ７１は、検索語「かかかか」の格納形式２のデータサイズが、格納形式１及び格納形式３のデータサイズよりも小さいため（図６参照）、文字インデックス部テーブル３５から文字インデックス番号「１」を取得する。そして、ＣＰＵ７１は、順列部テーブル３９から検索語「かかかか」の文字数「４」に対応する「格納形式」、「インデックス番号」、「順列部」、「該当件数」、「次文字」の各データを１組のデータとして順番に読み出し、各組毎に相互に対応させてＲＡＭ７２に記憶する。
【０２１０】
そして、ＣＰＵ７１は、「格納形式」が「２」で、且つ、「インデックス番号」に「１」が記憶され、１バイトの「１１１１００００」のデータが記憶されている「順列部」（図６参照）に対応する「該当件数」の「１０１件」、「次文字」の「あ、え、お、・・・」（図２１参照）を読み出す。そして、ＣＰＵ７１は、検索語入力画面８１の件数表示部８７に「１０１件」を表示する。また、ＣＰＵ７１は、「次文字」の「あ、え、お、・・・」以外の入力できない文字に対応する５０音キー８２の文字ボタンの枠や枠内の文字を灰色等や透明度を高くし、通常表示状態よりトーンダウンして表示する。
【０２１１】
［格納形式３の場合］
また他方、上記Ｓ７２０で、ＣＰＵ７１は、当該検索語の文字列を順列部テーブル３９に格納する格納形式３のデータサイズが、格納形式１及び格納形式２の各データサイズよりも少ないデータサイズであると判定した場合には（Ｓ７２０：ＹＥＳ）、ＣＰＵ２１は、Ｓ７３３の処理に移行する。
【０２１２】
図２５に示すように、Ｓ７３３において、ＣＰＵ７１は、「ビットインデックス番号」の識別コードを順列部テーブル３９の「インデックス番号」としてＲＡＭ７２に記憶しているか否かを判定する判定処理を実行する。具体的には、ＣＰＵ７１は、ビットインデックス番号フラグをＲＡＭ７２から読み出し、ＯＮに設定されているか否かを判定する判定処理を実行する。
【０２１３】
そして、「ビットインデックス番号」の識別コードを順列部テーブル３９の「インデックス番号」としてＲＡＭ７２に記憶していると判定した場合、つまり、ビットインデックス番号フラグがＯＮに設定されていると判定した場合には（Ｓ７３３：ＹＥＳ）、ＣＰＵ７１は、Ｓ７３４の処理に移行する。Ｓ７３４において、ＣＰＵ７１は、上記７１７でＲＡＭに記憶した「格納形式」が「３」に対応する「インデックス番号」に、当該「ビットインデックス番号」の識別コードが記憶されているか否かを判定する判定処理を実行する。
【０２１４】
そして、上記７１７でＲＡＭに記憶した「格納形式」が「３」に対応する「インデックス番号」に、当該「ビットインデックス番号」の識別コードが記憶されていないと判定した場合には（Ｓ７３４：ＮＯ）、ＣＰＵ７１は、検索語入力画面８１の件数表示部８７に、候補施設名が無い旨を表す「該当件数：無し」を表示した後、当該処理を終了する。
一方、上記７１７でＲＡＭに記憶した「格納形式」が「３」に対応する「インデックス番号」に、当該「ビットインデックス番号」の識別コードが記憶されていると判定した場合には（Ｓ７３４：ＹＥＳ）、ＣＰＵ７１は、後述のＳ７３６の処理に移行する。
【０２１５】
他方、上記Ｓ７３３で、「ビットインデックス番号」の識別コードを順列部テーブル３９の「インデックス番号」としてＲＡＭ７２に記憶していないと判定した場合、つまり、ビットインデックス番号フラグがＯＦＦに設定されていると判定した場合には（Ｓ７３３：ＮＯ）、ＣＰＵ７１は、Ｓ７３５の処理に移行する。
【０２１６】
Ｓ７３５において、ＣＰＵ７１は、当該検索語の文字列から「格納形式３」の「ビットインデックス部」を作成した後、Ｓ７３４の処理に移行する。つまり、ＣＰＵ７１は、当該検索語の読みに用いる全文字種類（５０音では、「あ、い、う、・・・、ん」の仮名である。）に対応するビット配列を有する固定バイト数（５０音では、６バイトである。）で構成され、検索語の文字列を構成する文字種類に対応するビットをＯＮに設定し、それ以外のビットをＯＦＦに設定した「ビットインデックス部」を作成した後、Ｓ７３４の処理に移行する。
【０２１７】
続いて、Ｓ７３４において、ＣＰＵ７１は、上記７１７でＲＡＭに記憶した「格納形式」が「３」に対応する「インデックス番号」に、当該検索語の文字列から作成した「格納形式３」の「ビットインデックス部」が記憶されているか否かを判定する判定処理を実行する。
【０２１８】
そして、上記７１７でＲＡＭに記憶した「格納形式」が「３」に対応する「インデックス番号」に、当該検索語の文字列から作成した「格納形式３」の「ビットインデックス部」が記憶されていないと判定した場合には（Ｓ７３４：ＮＯ）、ＣＰＵ７１は、検索語入力画面８１の件数表示部８７に、候補施設名が無い旨を表す「該当件数：無し」を表示した後、当該処理を終了する。
【０２１９】
一方、上記７１７でＲＡＭに記憶した「格納形式」が「３」に対応する「インデックス番号」に、当該検索語の文字列から作成した「格納形式３」の「ビットインデックス部」が記憶されていると判定した場合には（Ｓ７３４：ＹＥＳ）、ＣＰＵ７１は、Ｓ７３６の処理に移行する。Ｓ７３６において、ＣＰＵ７１は、当該検索語の文字列から「格納形式３」の「順列部」を作成する。つまり、ＣＰＵ７１は、検索語の文字列の各文字を、「格納形式３」の「ビットインデックス部」でＯＮに設定された文字種類中での順番を示すことができるビット数の数値で各文字の順番を表した「順列部」を作成してＲＡＭ７２に記憶する。
【０２２０】
続いて、Ｓ７３７において、ＣＰＵ７１は、上記Ｓ７１７でＲＡＭに記憶した「格納形式」が「３」に対応する「インデックス番号」のうち、当該「ビットインデックス番号」の識別コード、又は、当該検索語の文字列から作成した「格納形式３」の「ビットインデックス部」が記憶されている「インデックス番号」に対応する全ての「順列部」についてＳ７３８以降の処理を実行したか否かを判定する判定処理を実行する。
【０２２１】
そして、当該「ビットインデックス番号」の識別コード、又は、当該検索語の文字列から作成した「格納形式３」の「ビットインデックス部」が記憶されている「インデックス番号」に対応する全ての「順列部」についてＳ７３８以降の処理を実行したと判定した場合には（Ｓ７３７：ＹＥＳ）、ＣＰＵ７１は、検索語入力画面８１の件数表示部８７に、候補施設名が無い旨を表す「該当件数：無し」を表示した後、当該処理を終了する。
【０２２２】
一方、当該「ビットインデックス番号」の識別コード、又は、当該検索語の文字列から作成した「格納形式３」の「ビットインデックス部」が記憶されている「インデックス番号」に対応する全ての「順列部」についてＳ７３８以降の処理を実行していないと判定した場合には（Ｓ７３７：ＮＯ）、ＣＰＵ７１は、Ｓ７３８の処理に移行する。Ｓ７３８において、ＣＰＵ７１は、当該「ビットインデックス番号」の識別コード、又は、当該検索語の文字列から作成した「格納形式３」の「ビットインデックス部」が記憶されている「インデックス番号」に対応する全ての「順列部」のうち、残っている次の「順列部」を読み出す。
【０２２３】
続いて、Ｓ７３９において、ＣＰＵ７１は、この読み出した「順列部」と上記Ｓ７３６で検索語の文字列から作成した「順列部」とが一致するか否かを判定する判定処理を実行する。そして、この読み出した「順列部」と上記Ｓ７３６で検索語の文字列から作成した「順列部」とが一致していないと判定した場合には（Ｓ７３９：ＮＯ）、ＣＰＵ７１は、再度Ｓ７３７以降の処理を実行する。
【０２２４】
一方、この読み出した「順列部」と上記Ｓ７３６で検索語の文字列から作成した「順列部」とが一致すると判定した場合には（Ｓ７３９：ＹＥＳ）、ＣＰＵ７１は、Ｓ７４０の処理に移行する。Ｓ７４０において、ＣＰＵ７１は、上記Ｓ７１７で記憶した「格納形式」、「インデックス番号」、「順列部」、「該当件数」、「次文字」の各データから、この読み出した「順列部」に対応付けて記憶されている「該当件数」と「次文字」の各データをＲＡＭ７２から読み出す。
そして、Ｓ７４１において、ＣＰＵ７１は、上記Ｓ７２３の処理を実行した後、当該処理を終了する。
【０２２５】
以上詳細に説明した通り、本実施例に係る情報作成装置１では、ＣＰＵ２１は、キーワードの文字列を順列部テーブル３９に記憶する際の格納形式１乃至格納形式３のそれぞれで表した場合について、各格納形式１〜３のデータサイズ（バイト数）を算出する。そして、ＣＰＵ２１は、キーワードの文字列を順列部テーブル３９に記憶する際の格納形式２又は格納形式３のデータサイズが、キーワードの文字列の文字数を１バイトで表した「文字数」と、この文字列の各文字を１バイトの文字コードで表した「順列部」とから構成した格納形式１のデータサイズよりも少ない場合には、キーワードの文字列を格納形式２又は格納形式３で順列部テーブル３９に記憶する。
【０２２６】
これにより、キーワードの文字列の各文字を１バイトの文字コードで記憶する格納形式１だけでなく、キーワードの文字列を格納形式２又は格納形式３で順列部テーブル３９に記憶することが可能となり、検索対象となるキーワードの文字列を「順列部」に記憶する順列部テーブル３９のデータサイズを大幅に削減して、検索情報ＤＢ２８のメモリ容量の増大を抑止することが可能となる。
【０２２７】
従って、ナビゲーション装置２のＣＰＵ７１が、順列部テーブル３９等を格納するナビ側検索情報ＤＢ５４のメモリ容量の増大も抑止することが可能となる。また、ナビゲーション装置２のＣＰＵ７１が、ナビ側検索情報ＤＢ５４に格納した順列部テーブル３９から検索語の文字数に対応する全データを抽出して、展開するために必要なＲＡＭ７２のメモリ容量の増大も抑止することが可能となる。
【０２２８】
また、キーワードの文字列を順列部テーブル３９に記憶する際の格納形式２の「文字インデックス部」のデータサイズが、格納形式３の「ビットインデックス部」のデータサイズ以下場合には、ＣＰＵ２１は、当該キーワードの文字列を順列部テーブル３９に記憶する形式を格納形式２に設定する。これにより、ＣＰＵ２１は、文字インデックス部テーブル３５を迅速に作成することができると共に、文字インデックス部テーブル３５のデータサイズの削減化を図り、検索情報ＤＢ２８のメモリ容量の増大を抑止することが可能となる。
【０２２９】
また、キーワードの文字列を順列部テーブル３９に記憶する際の格納形式２の「文字インデックス部」のデータサイズが、格納形式３の「ビットインデックス部」のデータサイズより大きい場合には、ＣＰＵ２１は、当該キーワードの文字列を順列部テーブル３９に記憶する形式を格納形式３に設定する。これにより、ＣＰＵ２１は、ビットインデックス部はキーワードの読みに用いる全文字種類（５０音では、「あ、い、う、・・・、ん」の仮名である。）に対応するビット配列を有する固定バイト数（５０音では、６バイトである。）で構成されるため、ビットインデックス部テーブル３８のデータサイズの削減化を図り、検索情報ＤＢ２８のメモリ容量の増大を抑止することが可能となる。
【０２３０】
また、上記Ｓ２１８において、一方のインデックス候補の文字種類の全てが他方のインデックス候補の文字種類に含まれる場合には、この一方のインデックス候補に替えて当該他方のインデックス候補を抽出して文字インデックス部テーブル３５又はビットインデックス部テーブル３８を作成するため、各テーブル３５、３８のデータサイズの更なる削減化を図り、検索情報ＤＢ２８のメモリ容量の増大を抑止することが可能となる。
【０２３１】
従って、ナビゲーション装置２のＣＰＵ７１が、文字インデックス部テーブル３５、ビットインデックス部テーブル３８等を格納するナビ側検索情報ＤＢ５４のメモリ容量の増大も更に抑止することが可能となる。また、ナビゲーション装置２のＣＰＵ７１が、ナビ側検索情報ＤＢ５４に格納した各テーブル３５、３８から検索語の文字数に対応する階乗個数の全データを抽出して、展開するために必要なＲＡＭ７２のメモリ容量の増大も抑止することが可能となる。
【０２３２】
尚、本発明は前記実施例に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の改良、変形が可能であることは勿論である。例えば、以下のようにしてもよい。
【０２３３】
［他の実施例１］
（Ａ）例えば、上記Ｓ１１８のサブ処理を実行せず、統合カウントテーブル３４を作成しないようにしてもよい。そして、上記Ｓ１２０において、統合カウントテーブル３４の「インデックス候補」に替えて、インデックスカウントテーブル３３の「インデックス内容」を用い、統合カウントテーブル３４の「カウント値」に替えて、インデックスカウントテーブル３３の「カウント値」を用いて、共有インデックスデータとしての文字インデックス部テーブル３５を作成するようにしてもよい。そして、文字インデックス部テーブル３５のインデックスコードとしての「文字インデックス番号」に、インデックス内容を識別する識別コードを記憶した後、再度Ｓ１１９以降の処理を実行するようにしてもよい。
【０２３４】
また、上記Ｓ３１８のサブ処理を実行せず、統合カウントテーブル３７を作成しないようにしてもよい。そして、上記Ｓ３２０において、統合カウントテーブル３７の「インデックス候補」に替えて、インデックスカウントテーブル３６の「インデックス内容」を用い、統合カウントテーブル３８の「カウント値」に替えて、インデックスカウントテーブル３６の「カウント値」を用いて、共有インデックスデータとしてのビットインデックス部テーブル３８を作成するようにしてもよい。そして、ビットインデックス部テーブル３８のインデックスコードとしての「ビットインデックス番号」に、インデックス内容を識別する識別コードを記憶した後、再度Ｓ３１９以降の処理を実行するようにしてもよい。
【０２３５】
これにより、文字インデックス部テーブル３５とビットインデックス部テーブル３８を迅速に作成することができると共に、順列部テーブル３９を迅速に作成することができる。また、キーワードの文字列の各文字を１バイトの文字コードで記憶する格納形式１だけでなく、キーワードの文字列を格納形式２又は格納形式３で順列部テーブル３９に記憶することが可能となり、検索対象となるキーワードの文字列を「順列部」に記憶する順列部テーブル３９のデータサイズを大幅に削減して、検索情報ＤＢ２８のメモリ容量の増大を抑止することが可能となる。
【０２３６】
従って、ナビゲーション装置２のＣＰＵ７１が、順列部テーブル３９等を格納するナビ側検索情報ＤＢ５４のメモリ容量の増大も抑止することが可能となる。また、ナビゲーション装置２のＣＰＵ７１が、ナビ側検索情報ＤＢ５４に格納した順列部テーブル３９から検索語の文字数に対応する全データを抽出して、展開するために必要なＲＡＭ７２のメモリ容量の増大も抑止することが可能となる。
【０２３７】
［他の実施例２］
（Ｂ）また、文字インデックス部テーブル３５又はビットインデックス部テーブル３８の一方だけを作成するようにしてもよい。そして、検索対象となるキーワードの文字列を順列部テーブル３９に記憶する際の格納形式を格納形式１及び格納形式２、又は、格納形式１及び格納形式３にするようにしてもよい。
【０２３８】
これにより、検索対象となるキーワードの文字列を順列部テーブル３９に記憶する際の格納形式を格納形式１のみにした場合よりも、順列部テーブル３９のデータサイズを削減して、検索情報ＤＢ２８のメモリ容量の増大を抑止することが可能となる。従って、ナビゲーション装置２のＣＰＵ７１が、順列部テーブル３９等を格納するナビ側検索情報ＤＢ５４のメモリ容量の増大も抑止することが可能となる。
【０２３９】
また、ナビゲーション装置２のＣＰＵ７１が、ナビ側検索情報ＤＢ５４に格納した順列部テーブル３９から検索語の文字数に対応する全データを抽出して、展開するために必要なＲＡＭ７２のメモリ容量の増大も抑止することが可能となる。
【符号の説明】
【０２４０】
１      情報作成装置
１１      データ記録部
１９      カードＲ／Ｗ部
２７      施設名ＤＢ
２８      検索情報ＤＢ
２１      ＣＰＵ
２２      ＲＡＭ
２３      ＲＯＭ
３１      施設名データテーブル
３２      階乗個数テーブル
３３、３６      インデックスカウントテーブル
３４、３７    統合カウントテーブル
３５      文字インデックス部テーブル
３８      ビットインデックス部テーブル
３９      順列部テーブル
【図１】
2012215955.tif 000003
【図２】
2012215955.tif 000004
【図３】
2012215955.tif 000005
【図４】
2012215955.tif 000006
【図５】
2012215955.tif 000007
【図６】
2012215955.tif 000008
【図７】
2012215955.tif 000009
【図８】
2012215955.tif 000010
【図９】
2012215955.tif 000011
【図１０】
2012215955.tif 000012
【図１１】
2012215955.tif 000013
【図１２】
2012215955.tif 000014
【図１３】
2012215955.tif 000015
【図１４】
2012215955.tif 000016
【図１５】
2012215955.tif 000017
【図１６】
2012215955.tif 000018
【図１７】
2012215955.tif 000019
【図１８】
2012215955.tif 000020
【図１９】
2012215955.tif 000021
【図２０】
2012215955.tif 000022
【図２１】
2012215955.tif 000023
【図２２】
2012215955.tif 000024
【図２３】
2012215955.tif 000025
【図２４】
2012215955.tif 000026
【図２５】
2012215955.tif 000027
【図２６】
2012215955.tif 000028
【図２７】
2012215955.tif 000029
【図２８】
2012215955.tif 000030