説明

検索情報作成装置、検索情報作成方法及びプログラム

【課題】検索対象となる文字列情報を記憶するメモリ容量の増大を抑止することができる検索情報作成装置、検索情報作成方法及びプログラムを提供する。
【解決手段】検索対象となる検索語の読みの文字列を、前記検索語の読みとして利用可能な全文字種類をそれぞれ識別する全文字コードの順列にて表した第1順列部から構成された第1格納情報を作成する第1格納情報作成手段と、前記文字列を構成する文字種類を表したインデックス部と、該文字列を前記インデックス部における文字種類をそれぞれ識別する識別ビットコードの順列にて表した第2順列部とから構成された第2格納情報を作成する第2格納情報作成手段と、前記第1格納情報のデータサイズと前記第2格納情報のデータサイズとのうち、小さいデータサイズの方を前記検索語の読みの文字列として記憶する検索情報記憶手段と、を備える。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、入力された検索語に基づいて施設名を検索するために使用する検索情報を作成する検索情報作成装置、検索情報作成方法及びプログラムに関するものである。
【背景技術】
【0002】
従来より、入力された検索語に基づいて施設情報等を検索する技術に関し種々提案されている。
例えば、50音入力画面において、検索対象の読みを先頭文字から50音で入力すると、各文字を入力する毎に、CDに収録されている地図情報から前方一致する登録地点の名称が全数検索されて、検索対象の件数が表示される。また、同時に、この全数検索された登録地点の名称から次に選択して入力可能な文字が抽出され、この50音入力画面において次に選択して入力可能な50音入力キーが識別可能に表示される車両用ナビゲーション装置がある(例えば、特許文献1参照。)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平10−96647号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
前記した特許文献1に記載された車両用ナビゲーション装置では、登録地点の名称が増大した場合には、登録地点の名称をCDから全て読み出してメモリ上に展開し、入力された検索語と前方一致する登録地点の名称を全数検索することによって、検索対象の件数を迅速に表示することが考えられる。
しかしながら、登録地点の名称等の文字列を、検索語として利用可能な全文字種類をそれぞれ識別する文字コード(例えば、50音全てを識別可能な文字コードである。)等でメモリに記憶した場合には、一文字一文字を表現するために必要なデータサイズが大きくなってしまうため、検索対象として十分な個数の登録地点の名称等の文字列情報を記憶するためには、必要なメモリ容量が増大するという問題がある。
【0005】
そこで、本発明は、上述した問題点を解決するためになされたものであり、検索対象となる文字列情報を記憶するメモリ容量の増大を抑止することができる検索情報作成装置、検索情報作成方法及びプログラムを提供することを目的とする。
【課題を解決するための手段】
【0006】
前記目的を達成するため請求項1に係る検索情報作成装置は、検索対象となる検索語の読みの文字列を取得する文字列取得手段と、前記文字列を、前記検索語の読みとして利用可能な全文字種類をそれぞれ識別する全文字コードの順列にて表した第1順列部から構成された第1格納情報を作成する第1格納情報作成手段と、前記文字列を構成する文字種類を表したインデックス部と、該文字列を前記インデックス部における文字種類をそれぞれ識別する識別ビットコードの順列にて表した第2順列部とから構成された第2格納情報を作成する第2格納情報作成手段と、前記第1格納情報のデータサイズが前記第2格納情報のデータサイズ以下の場合には、前記検索語の読みの文字列として前記第1格納情報を記憶し、前記第1格納情報のデータサイズが前記第2格納情報のデータサイズよりも大きい場合には、前記検索語の読みの文字列として前記第2格納情報を記憶する検索情報記憶手段と、を備えたことを特徴とする。
【0007】
また、請求項2に係る検索情報作成装置は、請求項1に記載の検索情報作成装置において、前記第2格納情報作成手段は、前記文字列を構成する文字種類の種類数に対応し、該文字列を構成する各文字種類をそれぞれ識別する部分文字コードで表した文字インデックス部を作成する文字インデックス部作成手段と、前記検索語の読みとして利用可能な全文字種類に対応するビット配列を有し、前記ビット配列の各ビットのうち、前記文字列を構成する各文字種類に対応するビットをONに設定し、それ以外のビットをOFFに設定したビットインデックス部を作成するビットインデックス部作成手段と、を有し、該第2格納情報作成手段は、前記文字インデックス部のデータサイズが前記ビットインデックス部のデータサイズ以下の場合には、該文字インデックス部を前記インデックス部として設定し、前記文字インデックス部のデータサイズが前記ビットインデックス部のデータサイズよりも大きい場合には、該ビットインデックス部を前記インデックス部として設定することを特徴とする。
【0008】
また、請求項3に係る検索情報作成装置は、請求項1に記載の検索情報作成装置において、前記第2格納情報作成手段は、前記文字列を構成する文字種類の種類数に対応し、該文字列を構成する各文字種類をそれぞれ識別する部分文字コードで表した文字インデックス部を作成する文字インデックス部作成手段を有し、該第2格納情報作成手段は、前記文字インデックス部を、前記インデックス部として設定することを特徴とする。
【0009】
また、請求項4に係る検索情報作成装置は、請求項1に記載の検索情報作成装置において、前記第2格納情報作成手段は、前記検索語の読みとして利用可能な全文字種類に対応するビット配列を有し、前記ビット配列の各ビットのうち、前記文字列を構成する各文字種類に対応するビットをONに設定し、それ以外のビットをOFFに設定したビットインデックス部を作成するビットインデックス部作成手段を有し、該第2格納情報作成手段は、前記ビットインデックス部を前記インデックス部として設定することを特徴とする。
【0010】
また、請求項5に係る検索情報作成装置は、請求項1乃至請求項4のいずれかに記載の検索情報作成装置において、複数の検索語のそれぞれの前記第2格納情報を構成する各インデックス部のうち、複数の検索語において共通するインデックス部を抽出して格納した共有インデックスデータを記憶する共有インデックス記憶手段を備え、前記検索情報記憶手段は、前記共通するインデックス部を有する前記第2格納情報については、当該共通するインデックス部に替えて、前記共有インデックスデータにおける該共通するインデックス部を示すインデックスコードを記憶することを特徴とする。
【0011】
また、請求項6に係る検索情報作成装置は、請求項1乃至請求項4のいずれかに記載の検索情報作成装置において、複数の検索語のそれぞれの前記第2格納情報を構成する各インデックス部のうち、複数の検索語において共通するインデックス部を抽出して格納した共有インデックスデータを作成する共有インデックスデータ作成手段と、前記共有インデックスデータに格納されている複数のインデックス部のうち、一方のインデックス部の文字種類の全てが他方のインデックス部の文字種類に含まれる包含関係にあるインデックス部が存在するか否かを判定する包含関係判定手段と、一方のインデックス部の文字種類の全てが他方のインデックス部の文字種類に含まれる包含関係にあるインデックス部が存在すると判定された場合には、当該他方のインデックス部を抽出して統合インデックス部として格納した統合インデックスデータを記憶する統合インデックス部記憶手段と、を備え、前記検索情報記憶手段は、インデックス部の文字種類の全てが、前記統合インデックスデータに格納されている前記統合インデックス部の文字種類に含まれる包含関係にある前記第2格納情報については、当該インデックス部に替えて、前記統合インデックスデータにおける当該統合インデックス部を示すインデックスコードを記憶すると共に、前記第2順列部に替えて、前記文字列を当該統合インデックス部における文字種類をそれぞれ識別する識別ビットコードの順列にて表した第3順列部を記憶することを特徴とする。
【0012】
更に、請求項7に係る検索情報作成装置は、請求項1乃至請求項6のいずれかに記載の検索情報作成装置において、前記検索情報記憶手段は、前記検索語の文字列を含む候補施設名に関する検索補助情報を前記第1格納情報又は前記第2格納情報に関連付けて記憶することを特徴とする。
【0013】
また、請求項8に係る検索情報作成方法は、検索対象となる検索語の読みの文字列を取得する文字列取得工程と、前記文字列取得工程で取得した文字列を、前記検索語の読みとして利用可能な全文字種類をそれぞれ識別する全文字コードの順列にて表した第1順列部から構成された第1格納情報を作成する第1格納情報作成工程と、前記文字列取得工程で取得した文字列を構成する文字種類を表したインデックス部と、該文字列を前記インデックス部における文字種類をそれぞれ識別する識別ビットコードの順列にて表した第2順列部とから構成された第2格納情報を作成する第2格納情報作成工程と、前記第1格納情報作成工程で作成した第1格納情報のデータサイズが、前記第2格納情報作成工程で作成した第2格納情報のデータサイズ以下の場合には、前記検索語の読みの文字列として前記第1格納情報を記憶し、前記第1格納情報作成工程で作成した第1格納情報のデータサイズが、前記第2格納情報作成工程で作成した第2格納情報のデータサイズよりも大きい場合には、前記検索語の読みの文字列として前記第2格納情報を記憶する検索情報記憶工程と、を備えたことを特徴とする。
【0014】
更に、請求項9に係るプログラムは、コンピュータに、検索対象となる検索語の読みの文字列を取得する文字列取得工程と、前記文字列取得工程で取得した文字列を、前記検索語の読みとして利用可能な全文字種類をそれぞれ識別する全文字コードの順列にて表した第1順列部から構成された第1格納情報を作成する第1格納情報作成工程と、前記文字列取得工程で取得した文字列を構成する文字種類を表したインデックス部と、該文字列を前記インデックス部における文字種類をそれぞれ識別する識別ビットコードの順列にて表した第2順列部とから構成された第2格納情報を作成する第2格納情報作成工程と、前記第1格納情報作成工程で作成した第1格納情報のデータサイズが、前記第2格納情報作成工程で作成した第2格納情報のデータサイズ以下の場合には、前記検索語の読みの文字列として前記第1格納情報を記憶し、前記第1格納情報作成工程で作成した第1格納情報のデータサイズが、前記第2格納情報作成工程で作成した第2格納情報のデータサイズよりも大きい場合には、前記検索語の読みの文字列として前記第2格納情報を記憶する検索情報記憶工程と、を実行させるためのプログラムである。
【発明の効果】
【0015】
請求項1に係る検索情報作成装置、請求項8に係る検索情報作成方法及び請求項9に係るプログラムでは、検索対象となる検索語の読みの文字列を全文字コードの順列にて表した第1格納情報と、該文字列の各文字をインデックス部における文字種類をそれぞれ識別する識別ビットコードの順列にて表した第2格納情報とのそれぞれのデータサイズを比較して、データサイズ少ない方を検索語の読みの文字列として記憶する。
【0016】
これにより、検索対象となる検索語の読みの文字列を全文字コードの順列にて表して作成した第1格納情報の格納形式だけでなく、第1格納情報の格納形式よりもデータサイズが少なくなる第2格納情報の格納形式で検索語の読みの文字列を記憶することが可能となり、検索対象となる検索語の文字列を記憶する検索情報記憶手段のメモリ容量の増大を抑止することが可能となる。
【0017】
また、請求項2に係る検索情報作成装置では、文字インデックス部のデータサイズが、ビットインデックス部のデータサイズ以下の場合には、該文字インデックス部を第2格納情報のインデックス部として設定するため、インデックス部を迅速に作成することができる。また、文字インデックス部のデータサイズが、ビットインデックス部のデータサイズよりも大きい場合には、該ビットインデックス部をインデックス部として設定するため、インデックス部のデータサイズを、検索語の読みとして利用可能な全文字種類に対応するビット配列のデータサイズに固定することが可能となり(例えば、50音の場合には、ビット配列のデータサイズを6バイトに固定することができる。)、第2格納情報のデータサイズの増加を効果的に抑制することが可能となる。
【0018】
また、請求項3に係る検索情報作成装置では、文字列を構成する各文字種類を文字コードで表した文字インデックス部を第2格納情報のインデックス部として設定するため、第2格納情報のインデックス部を迅速に作成することができる。
【0019】
また、請求項4に係る検索情報作成装置では、検索語の読みとして利用可能な全文字種類に対応するビット配列の各ビットのうち、文字列を構成する各文字種類に対応するビットをONに設定し、それ以外のビットをOFFに設定したビットインデックス部をインデックス部として設定する。これにより、インデックス部のデータサイズを、検索語の読みとして利用可能な全文字種類に対応するビット配列のデータサイズに固定することが可能となり(例えば、50音の場合には、ビット配列のデータサイズを6バイトに固定することができる。)、第2格納情報のデータサイズの増加を効果的に抑制することが可能となる。
【0020】
また、請求項5に係る検索情報作成装置では、共通するインデックス部を有する第2格納情報については、当該共通するインデックス部に替えて、共有インデックスデータにおける該共通するインデックス部を示すインデックスコードを記憶することによって、該第2格納情報のデータサイズの更なる削減化を図ることができ、検索情報記憶手段のメモリ容量の増大を更に抑止することが可能となる。
【0021】
また、請求項6に係る検索情報作成装置では、インデックス部の文字種類の全てが、統合インデックスデータに格納されている統合インデックス部の文字種類に含まれる包含関係にある第2格納情報については、インデックス部に替えて、統合インデックスデータにおける当該統合インデックス部を示すインデックスコードを記憶することによって、第2格納情報のデータサイズの更なる削減化を図ることができ、検索情報記憶手段のメモリ容量の増大を更に抑止することが可能となる。また、インデックス部の文字種類の全てが統合インデックス部の文字種類に含まれる包含関係にある第2格納情報については、第2順列部に替えて、検索語の読みの文字列を当該統合インデックス部における文字種類をそれぞれ識別する識別ビットコードの順列にて表した第3順列部を記憶することによって、第2格納情報のデータサイズの増加を防止することができ、検索情報記憶手段のメモリ容量の増大を確実に抑止することが可能となる。
【0022】
更に、請求項7に係る検索情報作成装置では、検索語の文字列を含む候補施設名に関する検索補助情報を第1格納情報又は第2格納情報に関連付けて記憶するため、入力された検索語と前方一致する候補施設名に関する検索補助情報を迅速に検索することが可能となる。
【図面の簡単な説明】
【0023】
【図1】本実施例に係る情報作成装置を示したブロック図である。
【図2】施設名DBに格納された施設名データテーブルの一例を示す図である。
【図3】検索対象となる検索語の文字列と候補施設名に関する検索補助情報を関連付けて記憶する施設名検索用情報を作成する検索用情報作成処理を示すメインフローチャートである。
【図4】図3の「文字インデックス部テーブル作成処理」のサブ処理を示すサブフローチャートである。
【図5】図4の「インデックス統合処理」のサブ処理を示すサブフローチャートである。
【図6】キーワード「かかかか」を各格納形式で表した一例を示す図である。
【図7】キーワード「かききかききき」を各格納形式で表した一例を示す図である。
【図8】階乗個数テーブルの一例を示す図である。
【図9】インデックスカウントテーブルの一例を示す図である。
【図10】統合カウントテーブルの一例を示す図である。
【図11】検索情報DBに格納される文字インデックス部テーブルの一例を示す図である。
【図12】図3の「ビットインデックス部テーブル作成処理」のサブ処理を示すサブフローチャートである。
【図13】キーワード「かいしようかんきようかいはつ」を各格納形式で表した一例を示す図である。
【図14】キーワード「おかさきこうしようおかさきかんり」を各格納形式で表した一例を示す図である。
【図15】インデックスカウントテーブルの一例を示す図である。
【図16】統合カウントテーブルの一例を示す図である。
【図17】検索情報DBに格納されるビットインデックス部テーブルの一例を示す図である。
【図18】図3の「順列部テーブル作成処理」のサブ処理を示すサブフローチャートである。
【図19】図18の「格納形式2の順列部作成処理」のサブ処理を示すサブフローチャートである。
【図20】図18の「格納形式3の順列部作成処理」のサブ処理を示すサブフローチャートである。
【図21】検索情報DBに格納される順列部テーブルの一例を示す図である。
【図22】本実施例に係るナビゲーション装置を示したブロック図である。
【図23】入力された検索語に基づいて該当件数と次文字を取得する検索補助情報取得処理を示すフローチャートである。
【図24】入力された検索語に基づいて該当件数と次文字を取得する検索補助情報取得処理を示すフローチャートである。
【図25】入力された検索語に基づいて該当件数と次文字を取得する検索補助情報取得処理を示すフローチャートである。
【図26】図23の「文字インデックス番号取得処理」のサブ処理を示すサブフローチャートである。
【図27】図23の「ビットインデックス番号取得処理」のサブ処理を示すサブフローチャートである。
【図28】検索語「かかかか」が入力された検索語入力画面の一例を示す図である。
【発明を実施するための形態】
【0024】
以下、本発明に係る検索情報作成装置、検索情報作成方法及びプログラムを具体化した一実施例に基づき図面を参照しつつ詳細に説明する。
【実施例】
【0025】
[情報作成装置の概略構成]
先ず、本実施例に係る検索情報作成装置の一例としての情報作成装置1の概略構成について図1に基づいて説明する。図1は本実施例に係る情報作成装置1を示したブロック図である。
図1に示すように、本実施例に係る情報作成装置1は、各種のデータが記録されたデータ記録部11と、入力された情報に基づいて、各種の演算処理を行う制御部12と、操作者からの操作を受け付ける操作部14と、操作者に対して施設名等の情報を表示する液晶ディスプレイ15と、操作案内等に関する音声ガイダンスを出力するスピーカ16と、不図示の地図情報配信センタ等との間で携帯電話網等を介して通信を行う通信装置17と、フラッシュメモリを搭載した携帯型記憶媒体の一例としてのSDメモリカード5に後述の階乗個数テーブル32(図8参照)、文字インデックス部テーブル35(図11参照)、ビットインデックス部テーブル38(図17参照)、順列部テーブル39(図21参照)等を書き込み、また、該SDメモリカード5から施設名情報としての後述の施設名データテーブル31(図2参照)を読み出すカードリードライト部(カードR/W部)19とから構成されている。
【0026】
また、情報作成装置1は、ネットワーク4を介してナビゲーション装置2と各種の情報の送受信が可能となるように構成されている。例えば、情報作成装置1は、後述の施設名データテーブル31(図2参照)、階乗個数テーブル32(図8参照)、文字インデックス部テーブル35(図11参照)、ビットインデックス部テーブル38(図17参照)、順列部テーブル39(図21参照)等をネットワーク4を介してナビゲーション装置2へ配信することができる。また、ネットワーク4としては、例えば、携帯電話回線網、電話回線網、公衆通信回線網、専用通信回線網、インターネット等の通信回線網等の通信系を使用することができる。
【0027】
以下に、情報作成装置1を構成する各構成要素について説明すると、データ記録部11は、外部記憶装置及び記録媒体としてのハードディスク(図示せず)と、ハードディスクに記憶された施設名データベース(施設名DB)27、検索情報データベース(検索情報DB)28及び所定のプログラム等を読み出すとともにハードディスクに所定のデータを書き込む為のドライバを備えている。
【0028】
この施設名DB27には、施設名とキーワードで区切った施設名の読みとを関連付けて記憶する後述の施設名データテーブル31(図2参照)等が格納されている。ここで、キーワードは、意味を成す単位で構成された単語の文字列である。また、検索情報DB28には、後述の階乗個数テーブル32、文字インデックス部テーブル35、ビットインデックス部テーブル38、順列部テーブル39等が格納されている。
【0029】
また、図1に示すように、情報作成装置1を構成する制御部12は、情報作成装置1の全体の制御を行う演算装置及び制御装置としてのCPU21、CPU21が各種の演算処理を行うに当たってワーキングメモリとして使用されるRAM22、制御用のプログラム等が記憶されたROM23、SDメモリカード5やROM23から読み出したプログラムを記憶するフラッシュメモリ24等の内部記憶装置や、時間を計測するタイマ25等を備えている。
【0030】
また、ROM23には、後述の施設名検索用情報としての文字インデックス部テーブル35、ビットインデックス部テーブル38、順列部テーブル39を作成する検索用情報作成処理のプログラム(図3参照)等が記憶されている。また、ROM23に各種のプログラムが記憶されるようになっているが、カードR/W部19を介してSDメモリカード5からプログラム、施設名データテーブル31、階乗個数テーブル32等を読み出してフラッシュメモリ24やデータ記録部11に書き込むこともできる。更に、SDメモリカード5を交換することによってプログラムや施設名データテーブル31等を更新することができる。
【0031】
更に、制御部12には、操作部14、液晶ディスプレイ15、スピーカ16、通信装置17、カードR/W部19の各周辺装置(アクチュエータ)が電気的に接続されている。尚、本実施例においては、カードR/W部19には、SDメモリカード5が装着されるが、ミニSDメモリカード、マイクロSDメモリカード等を使用するようにしてもよい。
【0032】
ここで、施設名DB27に格納される施設名データテーブル31の一例について図2に基づいて説明する。
図2に示すように、施設名データテーブル31は、「施設名」と、「読み」とから構成されている。この、「施設名」には、検索対象となる目的地を表す施設名が記憶されている。また、「読み」には、施設名の読みが、「施設名」に記憶された各施設名に対応して記憶されている。また、施設名の読みは、キーワード毎に区切り文字(例えば「/」である。)で区切られて記憶されている。
【0033】
尚、施設名の読みに含まれる「が」、「ぱ」等の濁音・半濁音は「か」、「は」等の清音に、「ゃ」、「っ」等の小文字仮名(拗音・促音)は「や」、「つ」等の大文字仮名に、長音は対応する母音等のように、仮名の基本文字に変換して記憶される。例えば、「バーバースノー」の読みは、「はあはあ/すのお」と記憶される。また、「かなのじゅーじゅー美合町店」の読みは、「かなのしゆうしゆう/みあいちよう/てん」と記憶される。
【0034】
[検索用情報作成処理]
次に、上記のように構成された情報作成装置1のCPU21が実行する処理であって、文字インデックス部テーブル35、ビットインデックス部テーブル38、順列部テーブル39を作成する「検索用情報作成処理」について図3乃至図21に基づいて説明する。尚、図3にフローチャートで示されるプログラムは、操作部14の不図示の施設名検索用情報作成ボタンが押下された場合に、CPU21により実行される。
【0035】
図3に示すように、先ず、ステップ(以下、Sと略記する)11において、CPU21は、文字インデックス部テーブル35(図11参照)を作成する「文字インデックス部テーブル作成処理」のサブ処理を実行する。
そして、S12において、CPU21は、ビットインデックス部テーブル38(図17参照)を作成する「ビットインデックス部テーブル作成処理」のサブ処理を実行する。
続いて、S13において、CPU21は、順列部テーブル39(図21参照)を作成する「順列部テーブル作成処理」のサブ処理を実行した後、当該処理を終了する。
【0036】
[文字インデックス部テーブル作成処理]
次に、「文字インデックス部テーブル作成処理」のサブ処理について図4乃至図11に基づいて説明する。
図4に示すように、S111において、CPU21は、検索対象となる検索語の読みの文字列として、施設名データテーブル31の「読み」から全てのキーワードを順番に読み出してS112以降の処理を実行したか否かを判定する判定処理を実行する。尚、CPU21は、施設名データテーブル31に記憶されている1番目の施設名から順番に、それぞれに対応する「読み」の先頭のキーワードから順次読み出し、各キーワードについてS112以降の処理を実行する。
【0037】
そして、施設名データテーブル31の「読み」から全てのキーワードを順番に読み出してS112以降の処理を実行していない、つまり、後述の文字インデックス部テーブル35を作成して検索情報DB28に格納していないと判定した場合には(S111:NO)、CPU21は、S112の処理に移行する。S112において、CPU21は、施設名データテーブル31の「読み」から残っている次のキーワードを読み出して、RAM22に記憶する。
【0038】
そして、S113において、CPU21は、当該キーワードの文字列を順列部テーブル39に記憶する際の格納形式1乃至格納形式3のそれぞれで表した場合について、各格納形式1〜3のデータサイズ(バイト数)を算出する。
【0039】
ここで、格納形式1乃至格納形式3について図6及び図7に基づいて説明する。
図6及び図7に示すように、「格納形式1」は、キーワードの文字列の文字数を1バイトで表した「文字数」と、この文字列の各文字を、全文字コードとしての全文字種類(50音では、「あ、い、う、・・・、ん」の仮名である。)の各文字を表す1バイトの文字コードから選択した文字コードの順列にて表した「順列部」とから構成した格納形式である。従って、キーワードが4文字の「かかかか」の場合には、格納形式1では、5バイトのデータサイズとなる。また、キーワードが7文字の「かききかききき」の場合には、格納形式1では、8バイトのデータサイズとなる。
【0040】
また、「格納形式2」は、キーワードの文字列の文字種類の種類数を1バイトで表した「文字の種類」と、この文字列を構成する各文字種類を、部分文字コードとしての1バイトの文字コードで表した「文字インデックス部」と、この文字列の文字数を1バイトで表した「文字数」と、この文字列を、「文字インデックス部」を構成する文字種類中での順番を示すことができるビット数の数値(「識別ビットコード」として機能する。)の順列にて表した「順列部」と、から構成した格納形式である。
【0041】
従って、キーワードが4文字の「かかかか」の場合には、各文字「か」を1ビットの数値で表すことができるため、格納形式2では、4バイトのデータサイズとなる。また、キーワードが7文字の「かききかききき」の場合には、各文字「か」、「き」を2ビットの数値で表すことができるため、格納形式2では、6バイトのデータサイズとなる。
【0042】
また、「格納形式3」は、キーワードの読みに用いる全文字種類(50音では、「あ、い、う、・・・、ん」の仮名である。)に対応するビット配列を有する固定バイト数(50音では、6バイトである。)で構成され、キーワードの文字列を構成する文字種類に対応するビットをONに設定し、それ以外のビットをOFFに設定した「ビットインデックス部」と、この文字列の文字数を1バイトで表した「文字数」と、この文字列を、「ビットインデックス部」でONに設定された文字種類中での順番を示すことができるビット数の数値(「識別ビットコード」として機能する。)の順列にて表した「順列部」と、から構成した格納形式である。
【0043】
従って、キーワードが4文字の「かかかか」の場合には、各文字「か」を1ビットの数値で表すことができるため、格納形式3では、8バイトのデータサイズとなる。また、キーワードが7文字の「かききかききき」の場合には、各文字「か」、「き」を2ビットの数値で表すことができるため、格納形式3では、9バイトのデータサイズとなる。
【0044】
続いて、図4に示すように、S114において、CPU21は、当該キーワードの文字列を順列部テーブル39に記憶する格納形式2のデータサイズが、格納形式1及び格納形式3の各データサイズよりも少ないデータサイズか否かを判定する判定処理を実行する。そして、当該キーワードの文字列を順列部テーブル39に格納する格納形式2のデータサイズが、格納形式1及び格納形式3の各データサイズよりも少ないデータサイズでないと判定した場合には(S114:NO)、CPU21は、再度S111以降の処理を実行する。
【0045】
一方、当該キーワードの文字列を順列部テーブル39に格納する格納形式2のデータサイズが、格納形式1及び格納形式3の各データサイズよりも少ないデータサイズであると判定した場合には(S114:YES)、CPU21は、S115の処理に移行する。S115において、CPU21は、RAM22上に作成したインデックスカウントテーブル33(図9参照)の「インデックス内容」に、当該格納形式2の文字インデックス部が未だ記憶されていないか否か、つまり、当該格納形式2の文字インデックス部を記憶する必要があるか否かを判定する判定処理を実行する。
【0046】
ここで、先ず、検索情報DB28に予め格納されている階乗個数テーブル32について図8に基づいて説明する。
図8に示すように、階乗個数テーブル32は、「文字の種類」と、「階乗個数」とから構成されている。この「文字の種類」には、キーワードの文字列を構成する文字種類の種類数が記憶されている。また、「階乗個数」には、この「文字の種類」に記憶されている種類数を表すために必要なビット数で表現できる最大値、つまり、Nビットの場合は、2のN乗の数値が記憶されている。
【0047】
例えば、「文字の種類」が「1〜2」種類の場合には、「階乗個数」には、1ビットで文字種類数を表すことができるため、2の1乗の「2」が記憶されている。また、「文字の種類」が「3〜4」種類の場合には、「階乗個数」には、2ビットで文字種類数を表すことができるため、2の2乗の「4」が記憶されている。また、「文字の種類」が「5〜8」種類の場合には、「階乗個数」には、3ビットで文字種類数を表すことができるため、2の3乗の「8」が記憶されている。
【0048】
次に、RAM22上に作成されたインデックスカウントテーブル33について図9に基づいて説明する。
図9に示すように、インデックスカウントテーブル33は、「階乗個数」と、「インデックス内容」と、「カウント値」とから構成されている。この「階乗個数」には、格納形式2の「文字インデックス部」の文字種類の種類数を階乗個数テーブル32の「文字の種類」とした場合に、この「文字の種類」に対応する「階乗個数」の数値が記憶される。
【0049】
また、「インデックス内容」には、格納形式2の「文字インデックス部」が記憶される。また、「カウント値」には、「インデックス内容」に記憶されている文字種類を格納形式2の「文字インデックス部」とするキーワードの個数が記憶される。尚、情報作成装置1の起動時には、この「カウント値」には、「0」が記憶されている。
【0050】
そして、図4に示すように、インデックスカウントテーブル33の「インデックス内容」に、当該文字インデックス部が未だ記憶されていない、つまり、当該文字インデックス部を記憶する必要があると判定した場合には(S115:YES)、CPU21は、S116の処理に移行する。
【0051】
S116において、CPU21は、当該文字インデックス部の文字種類の種類数を階乗個数テーブル32の「文字の種類」として、この「文字の種類」に対応する「階乗個数」の数値を読み出し、インデックスカウントテーブル33の「階乗個数」に記憶する。また、CPU21は、当該文字インデックス部をインデックスカウントテーブル33の「インデックス内容」に記憶した後、S117の処理に移行する。
【0052】
例えば、図9に示すように、格納形式2の「文字インデックス部」が1バイトの文字コード「か」の場合には(図6参照)、文字種類の種類数は「1」種類のため、CPU21は、インデックスカウントテーブル33の「階乗個数」に「2」を記憶する。また、CPU21は、インデックスカウントテーブル33の「インデックス内容」には、1バイトの文字コード「か」を記憶する。
【0053】
一方、インデックスカウントテーブル33の「インデックス内容」に、当該文字インデックス部が既に記憶されている、つまり、当該文字インデックス部を記憶する必要がないと判定した場合には(S115:NO)、CPU21は、S117の処理に移行する。S117において、CPU21は、インデックスカウントテーブル33の当該文字インデックス部が記憶されている「インデックス内容」に対応する「カウント値」を読み出し、この「カウント値」に「1」加算して再度記憶した後、再度S111以降の処理を実行する。
【0054】
例えば、図9に示すように、文字インデックス部「かき」がインデックスカウントテーブル33の「インデックス内容」に初めて記憶された場合には、「インデックス内容」の「か」に対応する「カウント値」に「1」が記憶される。また、文字インデックス部「か」が「インデックス内容」に記憶されていた場合には、「インデックス内容」の「か」に対応する「カウント値」の「1」がインクリメントされて「2」となる。
【0055】
他方、上記S111で、施設名データテーブル31の「読み」から全てのキーワードを順番に読み出してS112以降の処理を実行したと判定した場合には(S111:YES)、CPU21は、S118の処理に移行する。S118において、CPU21は、「インデックス統合処理」のサブ処理を実行後、S119の処理に移行する。
【0056】
[インデックス統合処理]
ここで、「インデックス統合処理」のサブ処理について図5及び図10に基づいて説明する。
図5に示すように、S211において、CPU21は、インデックスカウントテーブル33の「インデックス内容」に記憶されている全データについてS212以降の処理を実行したか否かを判定する判定処理を実行する。
【0057】
そして、インデックスカウントテーブル33の「インデックス内容」に記憶されている全データについてS212以降の処理を実行していないと判定した場合には(S211:NO)、CPU21は、S212の処理に移行する。S212において、CPU21は、インデックスカウントテーブル33の「インデックス内容」に残っているデータのうち、文字コードの数(以下、「文字数」という。)の多い方から次のインデックス内容と、このインデックス内容に対応する「階乗個数」及び「カウント値」とを読み出して、RAM22に記憶する。
【0058】
続いて、S213において、CPU21は、読み出した当該インデックス内容の文字数と階乗個数とが一致するか否かを判定する判定処理を実行する。そして、読み出した当該インデックス内容の文字数と階乗個数とが一致すると判定した場合には(S213:YES)、CPU21は、S214の処理に移行する。
【0059】
S214において、CPU21は、RAM22上に作成した統合カウントテーブル34(図10参照)の「インデックス候補」に当該インデックス内容を記憶すると共に、このインデックス候補に対応する「階乗個数」と「カウント値」に当該階乗個数と当該カウント値を記憶した後、再度S211以降の処理を実行する。
【0060】
ここで、RAM22上に作成された統合カウントテーブル34について図10に基づいて説明する。図10に示すように、統合カウントテーブル34は、「階乗個数」と、「インデックス候補」と、「カウント値」とから構成されている。従って、統合カウントテーブル34の「インデックス候補」には、格納形式2の「文字インデックス部」が記憶される。
【0061】
例えば、図9に示すように、インデックスカウントテーブル33からインデックス内容として2バイトの文字コード「かく」と、階乗個数として「2」、カウント値として「2」を読み出して、当該インデックス内容「かく」の文字数「2」文字と階乗個数「2」とが一致すると判定した場合には(S213:YES)、CPU21は、当該階乗個数「2」を統合カウントテーブル34の「階乗個数」に記憶する。また、CPU21は、当該2バイトの文字コード「かく」と当該カウント値「2」を統合カウントテーブル34の「インデックス候補」と「カウント値」にそれぞれ記憶する。
【0062】
一方、読み出した当該インデックス内容の文字数と階乗個数とが一致しないと判定した場合には(S213:NO)、CPU21は、S215の処理に移行する。S215において、CPU21は、統合カウントテーブル34の「インデックス候補」の全データと当該インデックス内容との包含関係をチェックしたか否かを判定する判定処理を実行する。
【0063】
そして、統合カウントテーブル34の「インデックス候補」の全データと当該インデックス内容との包含関係をチェックして、当該インデックス内容の文字コードを全て包含するインデックス候補が無かったと判定した場合には(S215:YES)、CPU21は、上記S214の処理に移行する。S214において、CPU21は、当該インデックス内容を統合カウントテーブル34の「インデックス候補」に記憶すると共に、このインデックス候補に対応する「階乗個数」と「カウント値」に当該階乗個数と当該カウント値をそれぞれ記憶した後、再度S211以降の処理を実行する。
【0064】
一方、統合カウントテーブル34の「インデックス候補」の全データと当該インデックス内容との包含関係をチェックしていないと判定した場合には(S215:NO)、CPU21は、S216の処理に移行する。S216において、統合カウントテーブル34から次のインデックス候補を読み出し、RAM22に記憶する。
【0065】
続いて、S217において、CPU21は、この次のインデックス候補の文字数が、当該インデックス内容に対応する当該階乗個数以下か否かを判定する判定処理を実行する。そして、この次のインデックス候補の文字数が、当該インデックス内容に対応する当該階乗個数よりも大きい、つまり、インデックス候補の文字種類中での順番を示すことができるビット数が、当該階乗個数よりも大きいと判定した場合には(S217:NO)、CPU21は、再度S215以降の処理を実行する。
【0066】
一方、この次のインデックス候補の文字数が、当該インデックス内容に対応する当該階乗個数以下である、つまり、インデックス候補の文字種類中での順番を示すことができるビット数が、当該階乗個数以下であると判定した場合には(S217:YES)、CPU21は、S218の処理に移行する。S218において、CPU21は、この次のインデックス候補の文字種類の中に当該インデックス内容の全ての文字種類が含まれる包含関係にあるか否かを判定する判定処理を実行する。
【0067】
そして、この次のインデックス候補の文字種類に当該インデックス内容の全ての文字種類が含まれていないと判定した場合には(S218:NO)、CPU21は、再度S215以降の処理を実行する。
一方、この次のインデックス候補の文字種類に当該インデックス内容の全ての文字種類が含まれる包含関係にあると判定した場合には(S218:YES)、CPU21は、S219の処理に移行する。
【0068】
S219において、CPU21は、統合カウントテーブル34の当該インデックス候補に対応する「カウント値」を読み出し、インデックスカウントテーブル33の当該インデックス内容に対応する「カウント値」を加算して、再度、統合カウントテーブル34の当該インデックス候補に対応する「カウント値」に記憶した後、再度S211以降の処理を実行する。
【0069】
例えば、図9及び図10に示すように、統合カウントテーブル34のインデックス候補の「かき」の文字数「2」は、インデックスカウントテーブル33のインデックス内容「か」の階乗個数「2」以下であり、また、インデックス候補「かき」の文字種類の中にインデックス内容「か」の全ての文字種類が含まれる。従って、CPU21は、インデックス候補「かき」のカウント値「1」を読み出し、インデックスカウントテーブル33の当該インデックス内容「か」に対応するカウント値「2」を加算したカウント値「3」を統合カウントテーブル34の当該インデックス候補「かき」に対応する「カウント値」に記憶する。
【0070】
他方、上記S211で、インデックスカウントテーブル33の「インデックス内容」に記憶されている全データについてS212以降の処理を実行したと判定した場合、つまり、統合カウントテーブル34の作成を終了した場合には(S211:YES)、CPU21は、当該サブ処理を終了して、「文字インデックス部テーブル作成処理」のサブ処理に戻り、S119の処理に移行する。
【0071】
そして、図4に示すように、S119において、CPU21は、統合カウントテーブル34の「インデックス候補」に記憶されている全データについてS120以降の処理を実行したか否かを判定する判定処理を実行する。そして、統合カウントテーブル34の「インデックス候補」に記憶されている全データについてS120以降の処理を実行していないと判定した場合には(S119:NO)、CPU21は、S120の処理に移行する。
【0072】
S120において、CPU21は、統合カウントテーブル34の「インデックス候補」に残っているデータから次のインデックス候補と、このインデックス候補に対応する「階乗個数」及び「カウント値」とを読み出して、RAM22に記憶する。尚、CPU21は、「インデックス候補」に残っているデータのうち、文字種類の少ない順で、且つ、50音順に次のインデックス候補と、このインデックス候補に対応する「階乗個数」及び「カウント値」とを読み出して、RAM22に記憶するようにしてもよい。
【0073】
続いて、S121において、CPU21は、読み出した「カウント値」が「2」以上か否か、つまり、2回以上カウントされているか否かを判定する判定処理を実行する。そして、この「カウント値」が「1」の場合には(S121:NO)、CPU21は、再度S119以降の処理を実行する。
【0074】
一方、この「カウント値」が「2」以上の場合には(S121:YES)、CPU21は、当該インデックス候補は2つ以上の格納形式2の順列部に対して利用できる共有インデックス部であると判定し、S122の処理に移行する。S122において、CPU21は、RAM22上に作成した統合インデックスデータとしての文字インデックス部テーブル35(図11参照)の統合インデックス部としての「インデックス内容」に当該インデックス候補を記憶すると共に、この「インデックス内容」に対応する「階乗個数」に当該インデックス候補に対応する階乗個数を記憶する。
【0075】
そして、CPU21は、この「インデックス内容」に対応する文字インデックス部テーブル35のインデックスコードとしての「文字インデックス番号」に、インデックス内容を識別する識別コードを記憶した後、再度S119以降の処理を実行する。例えば、識別コードとして、当該インデックス候補を「インデックス内容」に記憶した順番を表す番号を記憶する。
【0076】
ここで、RAM22上に作成された文字インデックス部テーブル35について図11に基づいて説明する。
図11に示すように、文字インデックス部テーブル35は、「階乗個数」と、格納形式2の文字インデックス部を記憶する「インデックス内容」と、インデックス内容に記憶した文字インデックス部を識別する識別コードを記憶する「文字インデックス番号」とから構成されている。
【0077】
従って、文字インデックス部テーブル35の「インデックス内容」には、格納形式2の「文字インデックス部」のうち、2回以上使用される文字インデックス部、又は、他の文字インデックス部の全ての文字種類を含んだ文字インデックス部が記憶される。
【0078】
他方、上記S119で、統合カウントテーブル34の「インデックス候補」に記憶されている全データについてS120以降の処理を実行したと判定した場合、つまり、文字インデックス部テーブル35の作成を終了した場合には(S119:YES)、CPU21は、作成した文字インデックス部テーブル35を検索情報DB28に格納した後、当該サブ処理を終了してメインフローチャートに戻る。
【0079】
尚、CPU21は、文字インデックス部テーブル35の「インデックス内容」を文字種類の少ない順で、且つ、50音順にソートした後、「文字インデックス番号」に識別コードとして「1」から順番に番号を記憶した後、当該文字インデックス部テーブル35を検索情報DB28に格納するようにしてもよい。
【0080】
[ビットインデックス部テーブル作成処理]
次に、「ビットインデックス部テーブル作成処理」のサブ処理について図12乃至図17に基づいて説明する。
図12に示すように、S311において、CPU21は、上記S111の処理を実行する。そして、施設名データテーブル31の「読み」から全てのキーワードを順番に読み出してS312以降の処理を実行していない、つまり、後述のビットインデックス部テーブル38を作成して検索情報DB28に格納していないと判定した場合には(S311:NO)、CPU21は、S312の処理に移行する。
【0081】
S312において、CPU21は、上記S112の処理を実行する。そして、S313において、CPU21は、上記S113の処理を実行して、当該キーワードの文字列を順列部テーブル39に記憶する際の格納形式1乃至格納形式3のそれぞれで表した場合について、各格納形式1〜3のデータサイズ(バイト数)を算出する。
【0082】
ここで、格納形式1乃至格納形式3のデータサイズ(バイト数)の一例について図13及び図14に基づいて説明する。
図13に示すように、キーワードが14文字の「かいしようかんきようかいはつ」の場合には、格納形式1では、15バイトのデータサイズとなる。また、格納形式2では、18バイトのデータサイズとなる。また、格納形式3では、14バイトのデータサイズとなる。
【0083】
また、図14に示すように、キーワードが16文字の「おかさきこうしようおかさきかんり」の場合には、格納形式1では、17バイトのデータサイズとなる。また、格納形式2では、20バイトのデータサイズとなる。また、格納形式3では、15バイトのデータサイズとなる。
【0084】
続いて、図12に示すように、S314において、CPU21は、当該キーワードの文字列を順列部テーブル39に記憶する格納形式3のデータサイズが、格納形式1及び格納形式2の各データサイズよりも少ないデータサイズか否かを判定する判定処理を実行する。そして、当該キーワードの文字列を順列部テーブル39に格納する格納形式3のデータサイズが、格納形式1及び格納形式2の各データサイズよりも少ないデータサイズでないと判定した場合には(S314:NO)、CPU21は、再度S311以降の処理を実行する。
【0085】
一方、当該キーワードの文字列を順列部テーブル39に格納する格納形式3のデータサイズが、格納形式1及び格納形式2の各データサイズよりも少ないデータサイズであると判定した場合には(S314:YES)、CPU21は、S315の処理に移行する。S315において、CPU21は、RAM22上に作成したインデックスカウントテーブル36(図15参照)の「インデックス内容」に、当該格納形式3のビットインデックス部が未だ記憶されていないか否か、つまり、当該格納形式3のビットインデックス部を記憶する必要があるか否かを判定する判定処理を実行する。
【0086】
ここで、RAM22上に作成されたインデックスカウントテーブル36について図15に基づいて説明する。
図15に示すように、インデックスカウントテーブル36は、「階乗個数」と、「インデックス内容」と、「カウント値」とから構成されている。この「階乗個数」には、格納形式3の「ビットインデックス部」のONに設定された各ビットに対応する文字種類の種類数を階乗個数テーブル32の「文字の種類」とした場合に、この「文字の種類」に対応する「階乗個数」の数値が記憶される。
【0087】
また、「インデックス内容」には、格納形式3の「ビットインデックス部」を構成する6バイト固定のビット配列が記憶される。尚、図15においては、説明を簡単にするため、インデックスカウントテーブル36の「インデックス内容」に、6バイトのビット配列に替えて、「ビットインデックス部」のONに設定された各ビットに対応する文字種類を記載し、この文字種類に基づいて「インデックス内容」を説明する。
【0088】
また、「カウント値」には、「インデックス内容」に記憶されている6バイトのビット配列を格納形式3の「ビットインデックス部」とするキーワードの個数が記憶される。尚、情報作成装置1の起動時には、この「カウント値」には、「0」が記憶されている。
【0089】
そして、図12に示すように、インデックスカウントテーブル36の「インデックス内容」に、当該ビットインデックス部が未だ記憶されていない、つまり、当該ビットインデックス部を記憶する必要があると判定した場合には(S315:YES)、CPU21は、S316の処理に移行する。
【0090】
S316において、CPU21は、当該ビットインデックス部のONに設定された各ビットに対応する文字種類の種類数を階乗個数テーブル32の「文字の種類」として、この「文字の種類」に対応する「階乗個数」の数値を読み出し、インデックスカウントテーブル36の「階乗個数」に記憶する。また、CPU21は、当該ビットインデックス部をインデックスカウントテーブル36の「インデックス内容」に記憶した後、S317の処理に移行する。
【0091】
例えば、図15に示すように、格納形式3の「ビットインデックス部」が、「うかきくふる」に対応するビットがONに設定されている場合には、文字種類の種類数は「6」種類のため、CPU21は、インデックスカウントテーブル36の「階乗個数」に「8」を記憶する。また、CPU21は、インデックスカウントテーブル36の「インデックス内容」には、「うかきくふる」に対応するビットがONに設定されている6バイトのビット配列を記憶する。
【0092】
一方、インデックスカウントテーブル36の「インデックス内容」に、当該ビットインデックス部が既に記憶されている、つまり、当該ビットインデックス部を記憶する必要がないと判定した場合には(S315:NO)、CPU21は、S317の処理に移行する。S317において、CPU21は、インデックスカウントテーブル36の当該ビットインデックス部が記憶されている「インデックス内容」に対応する「カウント値」を読み出し、この「カウント値」に「1」加算して再度記憶した後、再度S311以降の処理を実行する。
【0093】
例えば、図15に示すように、「うかきくふる」に対応するビットがONに設定されたビットインデックス部が、インデックスカウントテーブル36の「インデックス内容」に初めて記憶された場合には、「インデックス内容」の「うかきくふる」に対応する「カウント値」に「1」が記憶される。また、「インデックス内容」の「うかきくふる」が「インデックス内容」に記憶されていた場合には、「インデックス内容」の「うかきくふる」に対応する「カウント値」の「1」がインクリメントされて「2」となる。
【0094】
他方、上記S311で、施設名データテーブル31の「読み」から全てのキーワードを順番に読み出してS312以降の処理を実行したと判定した場合には(S311:YES)、CPU21は、S318の処理に移行する。S318において、CPU21は、上記S118で実行した「インデックス統合処理」のサブ処理を再度、実行後、S319の処理に移行する。
【0095】
[インデックス統合処理]
ここで、「インデックス統合処理」のサブ処理について図5及び図16に基づいて説明する。尚、CPU21は、上記インデックスカウントテーブル33に替えて、図15に示すインデックスカウントテーブル36を用いて「インデックス統合処理」を実行する。
図5に示すように、S211において、CPU21は、インデックスカウントテーブル36の「インデックス内容」に記憶されている全データについてS212以降の処理を実行したか否かを判定する判定処理を実行する。
【0096】
そして、インデックスカウントテーブル36の「インデックス内容」に記憶されている全データについてS212以降の処理を実行していないと判定した場合には(S211:NO)、CPU21は、S212の処理に移行する。S212において、CPU21は、インデックスカウントテーブル36の「インデックス内容」に残っている6バイトの各データのうち、ONに設定されているビット数(以下、「文字数」という。)の多い方から次のインデックス内容と、このインデックス内容に対応する「階乗個数」及び「カウント値」とを読み出して、RAM22に記憶する。
【0097】
続いて、S213において、CPU21は、読み出した当該インデックス内容の文字数と階乗個数とが一致するか否か、つまり、ONに設定されているビット数と階乗個数とが一致するか否かを判定する判定処理を実行する。そして、読み出した当該インデックス内容の文字数と階乗個数とが一致すると判定した場合には(S213:YES)、CPU21は、S214の処理に移行する。
【0098】
S214において、CPU21は、RAM22上に作成した統合カウントテーブル37(図16参照)の「インデックス候補」に当該インデックス内容の6バイトのビット配列を記憶すると共に、このインデックス候補に対応する「階乗個数」と「カウント値」に当該階乗個数と当該カウント値を記憶した後、再度S211以降の処理を実行する。
【0099】
ここで、RAM22上に作成された統合カウントテーブル37について図16に基づいて説明する。図16に示すように、統合カウントテーブル37は、「階乗個数」と、「インデックス候補」と、「カウント値」とから構成されている。従って、統合カウントテーブル37の「インデックス候補」には、格納形式3の「ビットインデックス部」が記憶される。尚、図16においては、説明を簡単にするため、統合カウントテーブル37の「インデックス候補」に、6バイトのビット配列に替えて、「ビットインデックス部」のONに設定された各ビットに対応する文字種類を記載し、この文字種類に基づいて「インデックス候補」を説明する。
【0100】
一方、読み出した当該インデックス内容の文字数と階乗個数とが一致しないと判定した場合には(S213:NO)、CPU21は、S215の処理に移行する。S215において、CPU21は、統合カウントテーブル37の「インデックス候補」の全データと当該インデックス内容との包含関係をチェックしたか否かを判定する判定処理を実行する。
【0101】
そして、統合カウントテーブル37の「インデックス候補」の全データと当該インデックス内容との包含関係をチェックして、当該インデックス内容の6バイトのビット配列を全て包含するインデックス候補が無かったと判定した場合には(S215:YES)、CPU21は、上記S214の処理に移行する。S214において、CPU21は、当該インデックス内容の6バイトのビット配列を統合カウントテーブル34の「インデックス候補」に記憶すると共に、このインデックス候補に対応する「階乗個数」と「カウント値」に当該階乗個数と当該カウント値をそれぞれ記憶した後、再度S211以降の処理を実行する。
【0102】
例えば、図16に示すように、インデックスカウントテーブル36からインデックス内容として6バイトのビット配列「うかきくふる」と、階乗個数として「8」、カウント値として「2」を読み出して、当該インデックス内容「うかきくふる」を全て包含するインデックス候補が無かったと判定した場合には(S215:YES)、CPU21は、当該階乗個数「8」を統合カウントテーブル37の「階乗個数」に記憶する。また、CPU21は、当該インデックス内容としての6バイトのビット配列「うかきくふる」と、当該カウント値「2」を統合カウントテーブル37の「インデックス候補」と「カウント値」にそれぞれ記憶する。
【0103】
一方、統合カウントテーブル37の「インデックス候補」の全データと当該インデックス内容との包含関係をチェックしていないと判定した場合には(S215:NO)、CPU21は、S216の処理に移行する。S216において、統合カウントテーブル37から次のインデックス候補を読み出し、RAM22に記憶する。
【0104】
続いて、S217において、CPU21は、この次のインデックス候補の文字数が、当該インデックス内容に対応する当該階乗個数以下か否かを判定する判定処理を実行する。そして、この次のインデックス候補の文字数が、当該インデックス内容に対応する当該階乗個数よりも大きい、つまり、インデックス候補のONに設定された各ビットに対応する文字種類中での順番を示すことができるビット数が、当該階乗個数よりも大きいと判定した場合には(S217:NO)、CPU21は、再度S215以降の処理を実行する。
【0105】
一方、この次のインデックス候補の文字数が、当該インデックス内容に対応する当該階乗個数以下である、つまり、インデックス候補のONに設定された各ビットに対応する文字種類中での順番を示すことができるビット数が、当該階乗個数以下であると判定した場合には(S217:YES)、CPU21は、S218の処理に移行する。S218において、CPU21は、この次のインデックス候補の文字種類の中に当該インデックス内容の全ての文字種類が含まれる包含関係にあるか否か、つまり、インデックス候補のONに設定されたビットの中に、当該インデックス内容のONに設定されている各ビットが全て含まれる包含関係にあるか否かを判定する判定処理を実行する。
【0106】
そして、この次のインデックス候補の文字種類に当該インデックス内容の全ての文字種類が含まれていないと判定した場合には(S218:NO)、CPU21は、再度S215以降の処理を実行する。
一方、この次のインデックス候補の文字種類に当該インデックス内容の全ての文字種類が含まれる包含関係にあると判定した場合には(S218:YES)、CPU21は、S219の処理に移行する。
【0107】
S219において、CPU21は、統合カウントテーブル37の当該インデックス候補に対応する「カウント値」を読み出し、インデックスカウントテーブル36の当該インデックス内容に対応する「カウント値」を加算して、再度、統合カウントテーブル37の当該インデックス候補に対応する「カウント値」に記憶した後、再度S211以降の処理を実行する。
【0108】
例えば、図15及び図16に示すように、統合カウントテーブル37のインデックス候補の「うかきくふる」の文字数「6」は、インデックスカウントテーブル36のインデックス内容「うかきくふ」の階乗個数「8」以下であり、また、インデックス候補「うかきくふる」の文字種類の中にインデックス内容「うかきくふ」の全ての文字種類が含まれる。従って、CPU21は、インデックス候補「うかきくふる」のカウント値「2」を読み出し、インデックスカウントテーブル36の当該インデックス内容「うかきくふ」に対応するカウント値「1」を加算したカウント値「3」を統合カウントテーブル37の当該インデックス候補「うかきくふる」に対応する「カウント値」に記憶する。
【0109】
他方、上記S311で、インデックスカウントテーブル36の「インデックス内容」に記憶されている全データについてS312以降の処理を実行したと判定した場合、つまり、統合カウントテーブル37の作成を終了した場合には(S211:YES)、CPU21は、当該サブ処理を終了して、「ビットインデックス部テーブル作成処理」のサブ処理に戻り、S319の処理に移行する。
【0110】
そして、図12に示すように、S319において、CPU21は、統合カウントテーブル37の「インデックス候補」に記憶されている全データについてS320以降の処理を実行したか否かを判定する判定処理を実行する。そして、統合カウントテーブル37の「インデックス候補」に記憶されている全データについてS320以降の処理を実行していないと判定した場合には(S319:NO)、CPU21は、S320の処理に移行する。
【0111】
S320において、CPU21は、統合カウントテーブル37の「インデックス候補」に残っているデータから次のインデックス候補と、このインデックス候補に対応する「階乗個数」及び「カウント値」とを読み出して、RAM22に記憶する。尚、CPU21は、「インデックス候補」に残っているデータのうち、文字種類の少ない順、つまり、ONに設定されているビットの少ない順で、且つ、50音順に次のインデックス候補と、このインデックス候補に対応する「階乗個数」及び「カウント値」とを読み出して、RAM22に記憶するようにしてもよい。
【0112】
続いて、S321において、CPU21は、読み出した「カウント値」が「2」以上か否か、つまり、2回以上カウントされているか否かを判定する判定処理を実行する。そして、この「カウント値」が「1」の場合には(S321:NO)、CPU21は、再度S319以降の処理を実行する。
【0113】
一方、この「カウント値」が「2」以上の場合には(S321:YES)、CPU21は、当該インデックス候補は2つ以上の格納形式3の順列部に対して利用できる共有インデックス部であると判定し、S322の処理に移行する。S322において、CPU21は、RAM22上に作成した統合インデックスデータとしてのビットインデックス部テーブル38(図17参照)の統合インデックス部としての「インデックス内容」に当該インデックス候補を記憶すると共に、この「インデックス内容」に対応する「階乗個数」に当該インデックス候補に対応する階乗個数を記憶する。
【0114】
そして、CPU21は、この「インデックス内容」に対応するビットインデックス部テーブル38のインデックスコードとしての「ビットインデックス番号」に、インデックス内容を識別する識別コードを記憶した後、再度S319以降の処理を実行する。例えば、識別コードとして、当該インデックス候補を「インデックス内容」に記憶した順番を表す番号を記憶する。
【0115】
ここで、RAM22上に作成されたビットインデックス部テーブル38について図17に基づいて説明する。
図17に示すように、ビットインデックス部テーブル38は、「階乗個数」と、格納形式3のビットインデックス部を記憶する「インデックス内容」と、インデックス内容に記憶したビットインデックス部を識別する識別コードを記憶する「ビットインデックス番号」とから構成されている。尚、図17においては、説明を簡単にするため、ビットインデックス部テーブル38の「インデックス内容」に、6バイトのビット配列に替えて、「ビットインデックス部」のONに設定された各ビットに対応する文字種類を記載している。
【0116】
従って、ビットインデックス部テーブル38の「インデックス内容」には、格納形式3の「ビットインデックス部」のうち、2回以上使用されるビットインデックス部、又は、他のビットインデックス部の全ての文字種類を含んだビットインデックス部が記憶される。
【0117】
他方、上記S319で、統合カウントテーブル37の「インデックス候補」に記憶されている全データについてS320以降の処理を実行したと判定した場合、つまり、ビットインデックス部テーブル38の作成を終了した場合には(S319:YES)、CPU21は、作成したビットインデックス部テーブル38を検索情報DB28に格納した後、当該サブ処理を終了してメインフローチャートに戻る。
【0118】
尚、CPU21は、ビットインデックス部テーブル38の「インデックス内容」を文字種類の少ない順、つまり、ONに設定されたビット数の少ない順で、且つ、50音順にソートした後、「ビットインデックス番号」に識別コードとして「1」から順番に番号を記憶した後、当該ビットインデックス部テーブル38を検索情報DB28に格納するようにしてもよい。
【0119】
[順列部テーブル作成処理]
次に、「順列部テーブル作成処理」のサブ処理について図18乃至図21に基づいて説明する。
図18に示すように、S411において、CPU21は、上記S111の処理を実行する。そして、施設名データテーブル31の「読み」から全てのキーワードを順番に読み出してS412以降の処理を実行していない、つまり、後述の順列部テーブル39(図21参照)を作成して検索情報DB28に格納していないと判定した場合には(S411:NO)、CPU21は、S412の処理に移行する。
【0120】
S412において、CPU21は、上記S112の処理を実行する。そして、S413において、CPU21は、上記S113の処理を実行して、当該キーワードの文字列から順列部テーブル39に記憶する際の格納形式1乃至格納形式3のそれぞれのデータを作成し(図6等参照)、各格納形式1〜3のデータサイズ(バイト数)を算出する。
【0121】
続いて、S414において、CPU21は、上記S114の処理を実行する。そして、当該キーワードの文字列を順列部テーブル39に格納する格納形式2のデータサイズが、格納形式1及び格納形式3の各データサイズよりも少ないデータサイズであると判定した場合には(S414:YES)、CPU21は、S415の処理に移行する。S415において、CPU21は、「格納形式2の順列部作成処理」のサブ処理(図19参照)を実行後、後述のS419の処理に移行する。
【0122】
一方、当該キーワードの文字列を順列部テーブル39に格納する格納形式2のデータサイズが、格納形式1及び格納形式3の各データサイズよりも少ないデータサイズでないと判定した場合には(S414:NO)、CPU21は、S416の処理に移行する。S416において、CPU21は、上記S314の処理を実行する。
【0123】
そして、当該キーワードの文字列を順列部テーブル39に格納する格納形式3のデータサイズが、格納形式1及び格納形式2の各データサイズよりも少ないデータサイズであると判定した場合には(S416:YES)、CPU21は、S417の処理に移行する。S417において、CPU21は、「格納形式3の順列部作成処理」のサブ処理(図20参照)を実行後、後述のS419の処理に移行する。
【0124】
一方、当該キーワードの文字列を順列部テーブル39に格納する格納形式3のデータサイズが、格納形式1及び格納形式2の各データサイズよりも少ないデータサイズでないと判定した場合には(S416:NO)、CPU21は、S418の処理に移行する。
【0125】
S418において、CPU21は、上記S412で読み出したキーワードの文字列から、順列部テーブル39に記憶する際の「格納形式1」のデータを再度、作成する(図6等参照)。そして、CPU21は、この「格納形式1」のデータをRAM22上に作成した順列部テーブル39に記憶する。
【0126】
ここで、RAM22上に作成された順列部テーブル39について図21に基づいて説明する。図21に示すように、順列部テーブル39は、「文字数」、「格納形式」、「インデックス番号」、「順列部」、「該当件数」、「次文字」とから構成されている。この「文字数」には、キーワード(検索語)の文字数が記憶されている。また、「格納形式」には、キーワード(検索語)の文字列を「順列部」に記憶した格納形式が各格納形式1〜3のうちのいずれであるかを表す各番号「1」〜「3」が記憶される。
【0127】
また、「インデックス番号」には、キーワードの文字列から作成した格納形式2のデータの文字インデックス部が、文字インデックス部テーブル35の「インデックス内容」に記憶されていれば、この「インデックス内容」に対応する「文字インデックス番号」が記憶されている。また、キーワードの文字列から作成した格納形式2のデータの文字インデックス部が、文字インデックス部テーブル35の「インデックス内容」に記憶されていない場合には、格納形式2のデータの文字インデックス部が記憶されている。
【0128】
また、この「インデックス番号」には、格納形式3のデータのビットインデックス部が、ビットインデックス部テーブル38の「インデックス内容」に記憶されていれば、この「インデックス内容」に対応する「ビットインデックス番号」が記憶されている。また、キーワードの文字列から作成した格納形式3のデータのビットインデックス部が、ビットインデックス部テーブル38の「インデックス内容」に記憶されていない場合には、格納形式3のデータのビットインデックス部が記憶されている。
【0129】
例えば、格納形式2のデータの文字インデックス部「りを」が、文字インデックス部テーブル35の「インデックス内容」に記憶されていない場合には、「インデックス番号」に、記憶されていない旨を表す「0:」と、この文字インデックス部「りを」が記憶されている。また、格納形式3のデータのビットインデックス部「いうかきくしとよん」が、ビットインデックス部テーブル38の「インデックス内容」に記憶されていない場合には、「インデックス番号」に、記憶されていない旨を表す「0:」と、このビットインデックス部「いうかきくしとよん」が記憶されている。尚、図21においては、説明を簡単にするため、順列部テーブル36の「インデック番号」に記憶される、ビットインデックス部の6バイトのビット配列に替えて、ビットインデックス部のONに設定された各ビットに対応する文字種類を記載している。
【0130】
また、「順列部」には、キーワード(検索語)の文字列から、「格納形式」に記憶された格納形式で作成したデータの順列部(図6等参照)が記憶されている。また、「該当件数」には、キーワード(検索語)と前方一致するキーワードを有する候補施設名の件数が記憶されている。尚、所定件数(本実施例では、例えば、1万件である。)よりも多い場合には、「所定件数以上」が記憶されている。また、「次文字」には、「順列部」に記憶されたキーワード(検索語)の文字列の次に選択して入力できる次文字が記憶されている。
【0131】
従って、図18及び図21に示すように、S418で、キーワードの文字列から作成した「格納形式1」のデータをRAM22上に作成した順列部テーブル39に記憶する場合には、CPU21は、この「格納形式1」のデータから、キーワードの文字列の文字数を1バイトで表した先頭の「文字数」を読み出し、順列部テーブル39の「文字数」に記憶する。また、CPU21は、この「格納形式1」のデータから、この文字列の各文字を1バイトの文字コードで表した「順列部」を読み出し、順列部テーブル39の当該「文字数」に対応する「順列部」に記憶する。
【0132】
また、CPU21は、順列テーブル39の当該「文字数」に対応する「格納形式」に、「格納形式1」のデータの「順列部」を記憶する旨を表す「1」を記憶する。従って、順列テーブル39の当該「文字数」に対応する「インデックス番号」には、データは記憶されない。
【0133】
続いて、S419において、CPU21は、施設名DB27に格納された施設名データテーブル31から、「読み」に記憶された施設名の読みを順番に読み出し、上記S412で読み出した当該キーワードと前方一致するキーワードを有する施設名の読みをカウントする。
【0134】
そして、CPU21は、このカウント値が所定件数以下(本実施例では、例えば、1万件以下である。)の場合には、このカウント値を当該キーワードと前方一致するキーワードを有する候補施設名の件数として、順列部テーブル39の「順列部」に記憶した最新の順列部に対応する「該当件数」に記憶する。また、CPU21は、このカウント値が所定件数よりも多い場合には、「所定件数以上」を順列部テーブル39の「順列部」に記憶した最新の順列部に対応する「該当件数」に記憶する。
【0135】
その後、S420において、CPU21は、施設名DB27に格納された施設名データテーブル31から、「読み」に記憶された施設名の読みを順番に読み出し、上記S412で読み出した当該キーワードと前方一致するキーワードを有する施設名の読みがある場合には、この前方一致するキーワードの文字列から当該キーワードの次の文字を抽出して、RAM22に記憶する。
【0136】
そして、CPU21は、この抽出した当該キーワードの次の文字を構成する50音の文字種類を、当該キーワードの文字列の次に選択して入力できる次文字として、順列部テーブル39の「順列部」に記憶した最新の順列部に対応する「次文字」に記憶した後、再度、S411以降の処理を実行する。
【0137】
他方、上記S411で、施設名データテーブル31の「読み」から全てのキーワードを順番に読み出してS412以降の処理を実行したと判定した場合、つまり、順列部テーブル39の作成を終了した場合には(S411:YES)、CPU21は、作成した順列部テーブル39を検索情報DB28に格納した後、当該サブ処理を終了してメインフローチャートに戻り、当該処理を終了する。尚、CPU21は、順列テーブル39に記憶されたデータを「文字数」の少ない順にソートした後、検索情報DB28に格納するようにしてもよい。
【0138】
[格納形式2の順列部作成処理]
次に、上記S415で実行する「格納形式2の順列部作成処理」のサブ処理について図19に基づいて説明する。
図19に示すように、S511において、CPU21は、上記S412で読み出したキーワードの文字列から、順列部テーブル39に記憶する際の「格納形式2」のデータ(図6等参照)を再度、作成する。そして、CPU21は、この「格納形式2」のデータから文字インデックス部を読み出す。
【0139】
続いて、S512において、CPU21は、当該文字インデックス部が文字インデックス部テーブル35の「インデックス内容」に記憶されているか否かを判定する判定処理を実行する。そして、当該文字インデックス部が文字インデックス部テーブル35の「インデックス内容」に記憶されていると判定した場合には(S512:YES)、CPU21は、S513の処理に移行する。
【0140】
S513において、CPU21は、文字インデックス部テーブル35から、当該文字インデックス部が記憶されている「インデックス内容」に対応する「文字インデックス番号」を読み出し、順列部テーブル39の「インデックス番号」に記憶した後、後述のS515の処理に移行する。
【0141】
一方、当該文字インデックス部が文字インデックス部テーブル35の「インデックス内容」に記憶されていないと判定した場合には(S512:NO)、CPU21は、S514の処理に移行する。S514において、CPU21は、当該文字インデックス部が文字インデックス部テーブル35の「インデックス内容」に記憶されていない旨を表す「0:」と、当該キーワードの文字列を構成する各文字種類を1バイトの文字コードで表した当該文字インデックス部と、を順列部テーブル39の「インデックス番号」に記憶する。
【0142】
そして、S515において、当該キーワードの文字列から作成した「格納形式2」のデータからキーワードの文字列の文字数を1バイトで表した先頭の「文字数」を読み出し、順列部テーブル39の「文字数」に記憶する。また、CPU21は、この「格納形式2」のデータから、順列部を読み出し、順列部テーブル39の当該「文字数」に対応する「順列部」に記憶する。
【0143】
また、CPU21は、順列テーブル39の当該「文字数」に対応する「格納形式」に、「格納形式2」のデータの「順列部」を記憶する旨を表す「2」を記憶した後、当該サブ処理を終了して、順列部テーブル作成処理のサブ処理に戻り、S419の処理に移行する。
【0144】
[格納形式3の順列部作成処理]
次に、上記S417で実行する「格納形式3の順列部作成処理」のサブ処理について図20に基づいて説明する。
図20に示すように、S611において、CPU21は、上記S412で読み出したキーワードの文字列から、順列部テーブル39に記憶する際の「格納形式3」のデータ(図6等参照)を再度、作成する。そして、CPU21は、この「格納形式3」のデータからビットインデックス部を読み出す。
【0145】
続いて、S612において、CPU21は、当該ビットインデックス部がビットインデックス部テーブル38の「インデックス内容」に記憶されているか否かを判定する判定処理を実行する。そして、当該ビットインデックス部がビットインデックス部テーブル38の「インデックス内容」に記憶されていると判定した場合には(S612:YES)、CPU21は、S613の処理に移行する。
【0146】
S613において、CPU21は、ビットインデックス部テーブル38から、当該ビットインデックス部が記憶されている「インデックス内容」に対応する「ビットインデックス番号」を読み出し、順列部テーブル39の「インデックス番号」に記憶した後、後述のS615の処理に移行する。
【0147】
一方、当該ビットインデックス部がビットインデックス部テーブル38の「インデックス内容」に記憶されていないと判定した場合には(S612:NO)、CPU21は、S614の処理に移行する。S614において、CPU21は、当該ビットインデックス部がビットインデックス部テーブル38の「インデックス内容」に記憶されていない旨を表す「0:」と、当該キーワードの文字列を構成する各文字種類に対応するビットをONに設定し、それ以外のビットをOFFに設定した6バイトの当該ビットインデックス部と、を順列部テーブル39の「インデックス番号」に記憶する。
【0148】
そして、S615において、当該キーワードの文字列から作成した「格納形式3」のデータからキーワードの文字列の文字数を1バイトで表した先頭の「文字数」を読み出し、順列部テーブル39の「文字数」に記憶する。また、CPU21は、この「格納形式3」のデータから、順列部を読み出し、順列部テーブル39の当該「文字数」に対応する「順列部」に記憶する。
【0149】
また、CPU21は、順列テーブル39の当該「文字数」に対応する「格納形式」に、「格納形式3」のデータの「順列部」を記憶する旨を表す「3」を記憶した後、当該サブ処理を終了して、順列部テーブル作成処理のサブ処理に戻り、S419の処理に移行する。
【0150】
[ナビゲーション装置での使用例]
次に、ナビゲーション装置2が検索語入力画面81(図28参照)を介して検索語を入力された場合に、情報作成装置1からネットワーク4を介して配信された階乗個数テーブル32、文字インデックス部テーブル35、ビットインデックス部テーブル38、順列部テーブル39等を使用した一例について図22乃至図28に基づいて説明する。
【0151】
[ナビゲーション装置の概略構成]
【0152】
次に、ナビゲーション装置2の概略構成について図22を用いて説明する。図22は本実施例に係るナビゲーション装置2を示したブロック図である。
【0153】
図22に示すように、本実施例に係るナビゲーション装置2は、自車の現在位置(以下、「自車位置」という。)を検出する現在地検出処理部41と、各種のデータが記録されたデータ記録部42と、入力された情報に基づいて、各種の演算処理を行うナビゲーション制御部43と、操作者からの操作を受け付ける操作部44と、操作者に対して地図等の情報を表示する液晶ディスプレイ(LCD)45と、経路案内に関する音声ガイダンスを出力するスピーカ46と、情報作成装置1や不図示の道路交通情報センタ等との間で携帯電話網等を介して通信を行う通信装置47とから構成されている。また、ナビゲーション制御部43には自車両の走行速度を検出する車速センサ48が接続されている。
【0154】
以下に、ナビゲーション装置2を構成する各構成要素について説明すると、現在地検出処理部41は、GPS61、方位センサ62、距離センサ63等からなり、自車位置、自車方位、走行距離等を検出することが可能となっている。
【0155】
また、データ記録部42は、外部記憶装置及び記憶媒体としてのハードディスク(図示せず)と、ハードディスクに記憶されたナビ側地図情報データベース(ナビ側地図情報DB)51、ナビ側施設名データベース(ナビ側施設名DB)53、ナビ側検索情報データベース(ナビ側検索情報DB)54とを備えている。
【0156】
ナビ側地図情報DB51には、ナビゲーション装置2の走行案内や経路探索に使用されるナビ地図情報52が格納されている。また、ナビ側施設名DB53には、情報作成装置1からネットワーク4を介して配信された施設名データテーブル31等が格納されている。また、ナビ側検索情報DB54には、情報作成装置1からネットワーク4を介して配信された階乗個数テーブル32、文字インデックス部テーブル35、ビットインデックス部テーブル38、順列部テーブル39等が格納されている。
【0157】
ここで、ナビ地図情報52は、経路案内及び地図表示に必要な各種情報から構成されており、例えば、各新設道路を特定するための新設道路情報、地図を表示するための地図表示データ、各交差点に関する交差点データ、ノード点に関するノードデータ、道路(リンク)に関するリンクデータ、経路を探索するための探索データ、施設の一種である店舗等のPOI(Point of Interest)に関する施設データ、地点を検索するための検索データ等から構成されている。
【0158】
そして、ナビ側地図情報DB51の内容は、不図示の地図情報配信センタから通信装置47を介して配信された更新情報をダウンロードすることによって更新される。また、ナビ側施設名DB53に格納される施設名データテーブル31と、ナビ側検索情報DB54に格納される階乗個数テーブル32、文字インデックス部テーブル35、ビットインデックス部テーブル38、順列部テーブル39は、情報作成装置1から通信装置47を介して配信された更新情報をダウンロードすることによって更新される。
【0159】
また、図22に示すように、ナビゲーション装置2を構成するナビゲーション制御部43は、ナビゲーション装置2の全体の制御を行う演算装置及び制御装置としてのCPU71、並びにCPU71が各種の演算処理を行うに当たってワーキングメモリとして使用されるとともに、経路が探索されたときの経路データ等が記憶されるRAM72、制御用のプログラム等が記憶されたROM73、ROM73から読み出したプログラムを記憶するフラッシュメモリ74等の内部記憶装置や、時間を計測するタイマ75等を備えている。
【0160】
また、ROM73には、後述の入力された検索語に基づいて該当件数と検索語の次に選択することが可能な次文字を取得する検索補助情報取得処理(図23〜図25参照)等のプログラムが記憶されている。
更に、ナビゲーション制御部43には、操作部44、液晶ディスプレイ45、スピーカ46、通信装置47の各周辺装置(アクチュエータ)が電気的に接続されている。
【0161】
この操作部44は、走行開始時の現在位置を修正し、案内開始地点としての出発地及び案内終了地点としての目的地を入力する際や施設に関する情報の検索を行う場合等に操作され、各種のキーや複数の操作スイッチから構成される。そして、ナビゲーション制御部43は、各スイッチの押下等により出力されるスイッチ信号に基づき、対応する各種の動作を実行すべく制御を行う。
【0162】
また、液晶ディスプレイ45には、現在走行中の地図情報、目的地周辺の地図情報、操作案内、操作メニュー、キーの案内、現在地から目的地までの推奨経路、推奨経路に沿った案内情報、交通情報、ニュース、天気予報、時刻、メール、テレビ番組等が表示される。
【0163】
また、スピーカ46は、ナビゲーション制御部43からの指示に基づいて、推奨経路に沿った走行を案内する音声ガイダンス等を出力する。ここで、案内される音声ガイダンスとしては、例えば、「200m先、○○交差点を右方向です。」等がある。
【0164】
また、通信装置47は、情報作成装置1や地図情報配信センタと通信を行う携帯電話網等による通信手段であり、更新情報や更新地図情報等の送受信を行う。また、通信装置47は地図情報配信センタに加えて、道路交通情報センタ等から送信された渋滞情報やサービスエリアの混雑状況等の各情報から成る交通情報を受信する。
【0165】
[検索補助情報取得処理]
次に、上記のように構成されたナビゲーション装置1のCPU71が実行する処理であって、入力された検索語に基づいて該当件数と検索語の次に選択することが可能な次文字を取得する「検索補助情報取得処理」について図23乃至図28に基づいて説明する。尚、図23乃至図25にフローチャートで示されるプログラムは、操作部14の不図示の目的地設定ボタンが押下された場合に、CPU71により実行される。
【0166】
図23乃至図25に示すように、S711において、CPU71は、液晶ディスプレイ45の画面に、地点情報として目的地の住所や施設に関する名称等を検索するための検索語を入力する検索語入力画面81を表示する。
【0167】
ここで、検索語入力画面81の一例について図28に基づいて説明する。
図28に示すように、検索語入力画面81には、50音キー82、入力文字表示部83、修正ボタン86、件数表示部87、戻るボタン88、完了ボタン89が表示される。
【0168】
この入力文字表示部83には、50音キー82によって入力された入力文字が表示される。また、修正ボタン86を押下する毎に、入力文字表示部83に表示されている文字列の最終入力文字を1文字ずつ削除することができる。また、戻るボタン88を押下することによって、検索語入力画面81の前の画面に戻すことができる。
【0169】
また、件数表示部87には、後述のように入力文字表示部83に表示される文字列と前方一致するキーワードを有する施設名の件数が表示される。更に、完了ボタン89を押下することによって、入力文字表示部83に表示されている文字列を検索語として、地点情報としての施設に関する名称等を検索してリスト表示するように指示することができる。
【0170】
続いて、図23に示すように、S712において、CPU71は、50音キー82から入力された入力文字を入力文字表示部83に表示すると共に、入力文字表示部83に表示している文字列を検索語としてRAM72に記憶する。
【0171】
そして、S713において、CPU71は、検索語をRAM72から読み出し、当該検索語の文字列の文字種類の種類数を算出し、当該検索語に対応させてRAM72に記憶する。例えば、検索語が7文字の「かききかききき」の場合には、CPU71は、検索語の文字列の文字種類が「か」、「き」から種類数「2」を算出し、当該検索語に対応させてRAM72に記憶する。
【0172】
続いて、S714において、CPU71は、「文字インデックス番号取得処理」のサブ処理を実行する。ここで、「文字インデックス番号取得処理」のサブ処理について図26に基づいて説明する。
【0173】
[文字インデックス番号取得処理]
図26に示すように、S811において、CPU71は、当該検索語に対応させて記憶した文字種類の種類数をRAM72から読み出す。そして、CPU71は、この文字種類の種類数をナビ側検索情報DB54に格納された階乗個数テーブル32の「文字の種類」として、この「文字の種類」に対応する「階乗個数」を読み出し、RAM72に記憶する。例えば、種類数が「2」の場合には、CPU71は、階乗個数テーブル32の「文字の種類」「2」に対応する「階乗個数」として「2」を読み出し、RAM72に記憶する。
【0174】
そして、S812において、CPU71は、上記S811で記憶した「階乗個数」をナビ側検索情報DB54に格納された文字インデックス部テーブル35の「階乗個数」として、この「階乗個数」に対応する「インデックス内容」と「文字インデックス番号」とを文字インデックス部テーブル35から全て読み出して、それぞれ対応させてRAM72に記憶する。例えば、上記S811で記憶した「階乗個数」が「2」の場合には、文字インデックス部テーブル35の「階乗個数」が「2」の「インデックス内容」の「かき」、「かく」、・・・と「文字インデックス番号」の「1」、「2」、・・・とを全て読み出して、それぞれ対応させてRAM72に記憶する。
【0175】
続いて、S813において、CPU71は、RAM72に記憶した「インデックス内容」から全ての文字種類の組み合わせ、つまり、全ての1バイトの文字コードの組み合わせを順番に読み出してS814以降の処理を実行したか否かを判定する判定処理を実行する。
そして、RAM72に記憶した「インデックス内容」から全ての文字種類の組み合わせを順番に読み出してS814以降の処理を実行していないと判定した場合には(S813:NO)、CPU71は、S814の処理に移行する。
【0176】
S814において、CPU71は、RAM72に記憶した「インデックス内容」から残っている次の文字種類の組み合わせを読み出して、RAM72に記憶する。
続いて、S815において、CPU71は、当該検索語の文字種類をRAM72から読み出し、「インデックス内容」から読み出した次の文字種類が、当該検索語の文字種類を全て含むか否かを判定する判定処理を実行する。
【0177】
そして、「インデックス内容」から読み出した次の文字種類が、当該検索語の文字種類を全て含むと判定した場合には(S815:YES)、CPU71は、S816の処理に移行する。S816において、CPU71は、この「インデックス内容」に対応してRAM72に記憶した「文字インデックス番号」の識別コードを順列部テーブル39の「インデックス番号」としてRAM72に記憶する。
【0178】
また、CPU71は、文字インデックス番号フラグをRAM72から読み出し、この文字インデックス番号フラグをONに設定して、再度RAM72に記憶した後、当該サブ処理を終了してメインフローチャートに戻り、S715の処理に移行する。尚、ナビゲーション装置2の起動時には、文字インデックス番号フラグは、OFFに設定されてRAM72に記憶されている。
【0179】
一方、「インデックス内容」から読み出した次の文字種類が、当該検索語の文字種類を全て含んでいないと判定した場合には(S815:NO)、CPU71は、再度S813以降の処理を実行する。
そして、S813において、RAM72に記憶した「インデックス内容」から全ての文字種類の組み合わせを順番に読み出してS814以降の処理を実行したと判定した場合には(S813:YES)、CPU71は、S817の処理に移行する。
【0180】
S817において、CPU71は、ナビ側検索情報DB54に格納されている文字インデックス部テーブル35には、当該検索語の文字列に対応する「文字インデックス番号」の識別コードが「無い」旨を記憶する。つまり、CPU71は、文字インデックス番号フラグをRAM72から読み出し、この文字インデックス番号フラグをOFFに設定して、再度RAM72に記憶した後、当該サブ処理を終了してメインフローチャートに戻り、S715の処理に移行する。
【0181】
続いて、図23に示すように、S715において、CPU71は、「ビットインデックス番号取得処理」のサブ処理を実行する。ここで、「ビットインデックス番号取得処理」のサブ処理について図27に基づいて説明する。
【0182】
[ビットインデックス番号取得処理]
図27に示すように、S911において、CPU71は、当該検索語に対応させて記憶した文字種類の種類数をRAM72から読み出す。そして、CPU71は、この文字種類の種類数をナビ側検索情報DB54に格納された階乗個数テーブル32の「文字の種類」として、この「文字の種類」に対応する「階乗個数」を読み出し、RAM72に記憶する。例えば、種類数が「6」の場合には、CPU71は、階乗個数テーブル32の「文字の種類」「6」に対応する「階乗個数」として「8」を読み出し、RAM72に記憶する。
【0183】
そして、S912において、CPU71は、上記S911で記憶した「階乗個数」をナビ側検索情報DB54に格納されたビットインデックス部テーブル38の「階乗個数」として、この「階乗個数」に対応する「インデックス内容」の6バイトのビット配列と「ビットインデックス番号」とをビットインデックス部テーブル38から全て読み出して、それぞれ対応させてRAM72に記憶する。例えば、上記S911で記憶した「階乗個数」が「8」の場合には、ビットインデックス部テーブル38の「階乗個数」が「8」の「インデックス内容」の「うかきくふる」、・・・と「ビットインデックス番号」の「1」、・・・とを読み出して、それぞれ対応させてRAM72に記憶する。
【0184】
続いて、S913において、CPU71は、RAM72に記憶した「インデックス内容」から全ての文字種類の組み合わせ、つまり、全ての6バイトのビット配列を順番に読み出してS914以降の処理を実行したか否かを判定する判定処理を実行する。
そして、RAM72に記憶した「インデックス内容」から全ての文字種類の組み合わせを順番に読み出してS914以降の処理を実行していないと判定した場合には(S913:NO)、CPU71は、S914の処理に移行する。
【0185】
S914において、CPU71は、RAM72に記憶した「インデックス内容」から残っている次の文字種類の組み合わせ、つまり、次の6バイトのビット配列を読み出して、RAM72に記憶する。
続いて、S915において、CPU71は、当該検索語の文字種類をRAM72から読み出し、「インデックス内容」から読み出した次の文字種類が、当該検索語の文字種類を全て含むか否か、つまり、当該検索語の文字種類に対応する全ビットがONに設定されているか否かを判定する判定処理を実行する。
【0186】
そして、「インデックス内容」から読み出した次の文字種類が、当該検索語の文字種類を全て含む、つまり、当該検索語の文字種類に対応する全ビットがONに設定されていると判定した場合には(S915:YES)、CPU71は、S916の処理に移行する。S916において、CPU71は、この「インデックス内容」に対応してRAM72に記憶した「ビットインデックス番号」の識別コードを順列部テーブル39の「インデックス番号」としてRAM72に記憶する。
【0187】
また、CPU71は、ビットインデックス番号フラグをRAM72から読み出し、このビットインデックス番号フラグをONに設定して、再度RAM72に記憶した後、当該サブ処理を終了してメインフローチャートに戻り、S716の処理に移行する。尚、ナビゲーション装置2の起動時には、ビットインデックス番号フラグは、OFFに設定されてRAM72に記憶されている。
【0188】
一方、「インデックス内容」から読み出した次の文字種類が、当該検索語の文字種類を全て含んでいない、つまり、当該検索語の文字種類に対応する全ビットがONに設定されていないと判定した場合には(S915:NO)、CPU71は、再度S913以降の処理を実行する。
そして、S913において、RAM72に記憶した「インデックス内容」から全ての文字種類の組み合わせ、つまり、全ての6バイトのビット配列を順番に読み出してS914以降の処理を実行したと判定した場合には(S913:YES)、CPU71は、S917の処理に移行する。
【0189】
S917において、CPU71は、ナビ側検索情報DB54に格納されているビットインデックス部テーブル38には、当該検索語の文字列に対応する「ビットインデックス番号」の識別コードが「無い」旨を記憶する。つまり、CPU71は、ビットインデックス番号フラグをRAM72から読み出し、このビットインデックス番号フラグをOFFに設定して、再度RAM72に記憶した後、当該サブ処理を終了してメインフローチャートに戻り、S716の処理に移行する。
【0190】
続いて、図23に示すように、S716において、CPU71は、RAM72から当該検索語を読み出し、文字数をカウントする。
そして、S717において、CPU71は、ナビ側検索情報DB54に格納した順列部テーブル39から、当該検索語の文字数のカウント値が記憶されている「文字数」に対応する「格納形式」、「インデックス番号」、「順列部」、「該当件数」、「次文字」の各データを1組のデータとして順番に読み出し、各組毎に相互に対応させてRAM72に記憶する。
【0191】
そして、S718において、CPU71は、当該検索語の文字列を順列テーブル39に記憶する際の格納形式1乃至格納形式3のそれぞれで表した場合について(図6等参照)、各格納形式1〜3のデータサイズ(バイト数)を算出する。
続いて、S719において、CPU71は、当該検索語の文字列を順列テーブル39に記憶する格納形式2のデータサイズが、格納形式1及び格納形式3の各データサイズよりも少ないデータサイズか否かを判定する判定処理を実行する。
【0192】
そして、当該キーワードの文字列を順列部テーブル39に格納する格納形式2のデータサイズが、格納形式1及び格納形式3の各データサイズよりも少ないデータサイズでないと判定した場合には(S719:NO)、CPU71は、S720の処理に移行する。S720において、CPU71は、当該検索語の文字列を順列テーブル39に記憶する格納形式3のデータサイズが、格納形式1及び格納形式2の各データサイズよりも少ないデータサイズか否かを判定する判定処理を実行する。
【0193】
そして、当該検索語の文字列を順列部テーブル39に格納する格納形式3のデータサイズが、格納形式1及び格納形式2の各データサイズよりも少ないデータサイズでないと判定した場合には(S720:NO)、CPU71は、S721の処理に移行する。S721において、CPU71は、上記S717でRAMに記憶した当該検索語の文字数のカウント値が記憶されている「文字数」に対応する各「順列部」のうちに、当該検索語の文字列の各文字を1バイトの文字コードで表した「格納形式1の順列部」と一致するものがあるか否かを判定する判定処理を実行する。
【0194】
そして、上記S717でRAMに記憶した当該検索語の文字数のカウント値が記憶されている「文字数」に対応する各「順列部」のうちに、当該検索語の文字列の各文字を1バイトの文字コードで表した「格納形式1の順列部」と一致するものがあると判定した場合には(S721:YES)、CPU71は、S722の処理に移行する。S722において、CPU71は、当該検索語の文字列の各文字を1バイトの文字コードで表した「格納形式1の順列部」と一致する「順列部」に対応付けて記憶されている「該当件数」と「次文字」の各データをRAM72から読み出す。
【0195】
続いて、S723において、CPU71は、この読み出した「該当件数」を検索語入力画面81の件数表示部87に表示する。また、CPU71は、この読み出した「次文字」のデータに該当しない50音の文字を検索語の次に入力できない文字として抽出する。そして、CPU71は、これら入力できない文字に対応する50音キー82の文字ボタンの枠や枠内の文字を灰色等や透明度を高くし、通常表示状態よりトーンダウンして表示後、当該処理を終了する。
【0196】
一方、上記S717でRAMに記憶した当該検索語の文字数のカウント値が記憶されている「文字数」に対応する各「順列部」のうちに、当該検索語の文字列の各文字を1バイトの文字コードで表した「格納形式1の順列部」と一致するものが無いと判定した場合には(S721:NO)、CPU71は、検索語入力画面81の件数表示部87に、候補施設名が無い旨を表す「該当件数:無し」を表示した後、当該処理を終了する。
【0197】
[格納形式2の場合]
他方、上記S719で、CPU71は、当該検索語の文字列を順列部テーブル39に格納する格納形式2のデータサイズが、格納形式1及び格納形式3の各データサイズよりも少ないデータサイズであると判定した場合には(S719:YES)、CPU21は、S724の処理に移行する。
【0198】
図24に示すように、S724において、CPU71は、「文字インデックス番号」の識別コードを順列部テーブル39の「インデックス番号」としてRAM72に記憶しているか否かを判定する判定処理を実行する。具体的には、CPU71は、文字インデックス番号フラグをRAM72から読み出し、ONに設定されているか否かを判定する判定処理を実行する。
【0199】
そして、「文字インデックス番号」の識別コードを順列部テーブル39の「インデックス番号」としてRAM72に記憶していると判定した場合、つまり、文字インデックス番号フラグがONに設定されていると判定した場合には(S724:YES)、CPU71は、S725の処理に移行する。S725において、CPU71は、上記717でRAMに記憶した「格納形式」が「2」に対応する「インデックス番号」に、当該「文字インデックス番号」の識別コードが記憶されているか否かを判定する判定処理を実行する。
【0200】
そして、上記717でRAMに記憶した「格納形式」が「2」に対応する「インデックス番号」に、当該「文字インデックス番号」の識別コードが記憶されていないと判定した場合には(S725:NO)、CPU71は、検索語入力画面81の件数表示部87に、候補施設名が無い旨を表す「該当件数:無し」を表示した後、当該処理を終了する。
一方、上記717でRAMに記憶した「格納形式」が「2」に対応する「インデックス番号」に、当該「文字インデックス番号」の識別コードが記憶されていると判定した場合には(S725:YES)、CPU71は、後述のS727の処理に移行する。
【0201】
他方、「文字インデックス番号」の識別コードを順列部テーブル39の「インデックス番号」としてRAM72に記憶していないと判定した場合、つまり、文字インデックス番号フラグがOFFに設定されていると判定した場合には(S724:NO)、CPU71は、S726の処理に移行する。S726において、CPU71は、当該検索語の文字列から「格納形式2」の「文字インデックス部」を作成した後、S725の処理に移行する。つまり、CPU71は、当該検索語の文字列を構成する各文字種類を1バイトの文字コードで表した「文字インデックス部」を作成した後、S725の処理に移行する。
【0202】
続いて、S725において、CPU71は、上記717でRAMに記憶した「格納形式」が「2」に対応する「インデックス番号」に、当該検索語の文字列から作成した「格納形式2」の「文字インデックス部」が記憶されているか否かを判定する判定処理を実行する。
そして、上記717でRAMに記憶した「格納形式」が「2」に対応する「インデックス番号」に、当該検索語の文字列から作成した「格納形式2」の「文字インデックス部」が記憶されていないと判定した場合には(S725:NO)、CPU71は、検索語入力画面81の件数表示部87に、候補施設名が無い旨を表す「該当件数:無し」を表示した後、当該処理を終了する。
【0203】
一方、上記717でRAMに記憶した「格納形式」が「2」に対応する「インデックス番号」に、当該検索語の文字列から作成した「格納形式2」の「文字インデックス部」が記憶されていると判定した場合には(S725:YES)、CPU71は、S727の処理に移行する。S727において、CPU71は、当該検索語の文字列から「格納形式2」の「順列部」を作成する。つまり、CPU71は、検索語の文字列の各文字を、「格納形式2」の「文字インデックス部」を構成する文字種類中での順番を示すことができるビット数の数値で各文字の順番を表した「順列部」を作成してRAM72に記憶する。
【0204】
続いて、S728において、CPU71は、上記S717でRAMに記憶した「格納形式」が「2」に対応する「インデックス番号」のうち、当該「文字インデックス番号」の識別コード、又は、当該検索語の文字列から作成した「格納形式2」の「文字インデックス部」が記憶されている「インデックス番号」に対応する全ての「順列部」についてS729以降の処理を実行したか否かを判定する判定処理を実行する。
【0205】
そして、当該「文字インデックス番号」の識別コード、又は、当該検索語の文字列から作成した「格納形式2」の「文字インデックス部」が記憶されている「インデックス番号」に対応する全ての「順列部」についてS729以降の処理を実行したと判定した場合には(S728:YES)、CPU71は、検索語入力画面81の件数表示部87に、候補施設名が無い旨を表す「該当件数:無し」を表示した後、当該処理を終了する。
【0206】
一方、当該「文字インデックス番号」の識別コード、又は、当該検索語の文字列から作成した「格納形式2」の「文字インデックス部」が記憶されている「インデックス番号」に対応する全ての「順列部」についてS729以降の処理を実行していないと判定した場合には(S728:NO)、CPU71は、S729の処理に移行する。S729において、CPU71は、当該「文字インデックス番号」の識別コード、又は、当該検索語の文字列から作成した「格納形式2」の「文字インデックス部」が記憶されている「インデックス番号」に対応する全ての「順列部」のうち、残っている次の「順列部」を読み出す。
【0207】
続いて、S730において、CPU71は、この読み出した「順列部」と上記S727で検索語の文字列から作成した「順列部」とが一致するか否かを判定する判定処理を実行する。そして、この読み出した「順列部」と上記S727で検索語の文字列から作成した「順列部」とが一致していないと判定した場合には(S730:NO)、CPU71は、再度S728以降の処理を実行する。
【0208】
一方、この読み出した「順列部」と上記S727で検索語の文字列から作成した「順列部」とが一致すると判定した場合には(S730:YES)、CPU71は、S731の処理に移行する。S731において、CPU71は、上記S717で記憶した「格納形式」、「インデックス番号」、「順列部」、「該当件数」、「次文字」の各データから、この読み出した「順列部」に対応付けて記憶されている「該当件数」と「次文字」の各データをRAM72から読み出す。
そして、S732において、CPU71は、上記S723の処理を実行した後、当該処理を終了する。
【0209】
例えば、図28に示すよう、検索語入力画面81において、「かかかか」の検索語が入力された場合には、CPU71は、検索語「かかかか」の格納形式2のデータサイズが、格納形式1及び格納形式3のデータサイズよりも小さいため(図6参照)、文字インデックス部テーブル35から文字インデックス番号「1」を取得する。そして、CPU71は、順列部テーブル39から検索語「かかかか」の文字数「4」に対応する「格納形式」、「インデックス番号」、「順列部」、「該当件数」、「次文字」の各データを1組のデータとして順番に読み出し、各組毎に相互に対応させてRAM72に記憶する。
【0210】
そして、CPU71は、「格納形式」が「2」で、且つ、「インデックス番号」に「1」が記憶され、1バイトの「11110000」のデータが記憶されている「順列部」(図6参照)に対応する「該当件数」の「101件」、「次文字」の「あ、え、お、・・・」(図21参照)を読み出す。そして、CPU71は、検索語入力画面81の件数表示部87に「101件」を表示する。また、CPU71は、「次文字」の「あ、え、お、・・・」以外の入力できない文字に対応する50音キー82の文字ボタンの枠や枠内の文字を灰色等や透明度を高くし、通常表示状態よりトーンダウンして表示する。
【0211】
[格納形式3の場合]
また他方、上記S720で、CPU71は、当該検索語の文字列を順列部テーブル39に格納する格納形式3のデータサイズが、格納形式1及び格納形式2の各データサイズよりも少ないデータサイズであると判定した場合には(S720:YES)、CPU21は、S733の処理に移行する。
【0212】
図25に示すように、S733において、CPU71は、「ビットインデックス番号」の識別コードを順列部テーブル39の「インデックス番号」としてRAM72に記憶しているか否かを判定する判定処理を実行する。具体的には、CPU71は、ビットインデックス番号フラグをRAM72から読み出し、ONに設定されているか否かを判定する判定処理を実行する。
【0213】
そして、「ビットインデックス番号」の識別コードを順列部テーブル39の「インデックス番号」としてRAM72に記憶していると判定した場合、つまり、ビットインデックス番号フラグがONに設定されていると判定した場合には(S733:YES)、CPU71は、S734の処理に移行する。S734において、CPU71は、上記717でRAMに記憶した「格納形式」が「3」に対応する「インデックス番号」に、当該「ビットインデックス番号」の識別コードが記憶されているか否かを判定する判定処理を実行する。
【0214】
そして、上記717でRAMに記憶した「格納形式」が「3」に対応する「インデックス番号」に、当該「ビットインデックス番号」の識別コードが記憶されていないと判定した場合には(S734:NO)、CPU71は、検索語入力画面81の件数表示部87に、候補施設名が無い旨を表す「該当件数:無し」を表示した後、当該処理を終了する。
一方、上記717でRAMに記憶した「格納形式」が「3」に対応する「インデックス番号」に、当該「ビットインデックス番号」の識別コードが記憶されていると判定した場合には(S734:YES)、CPU71は、後述のS736の処理に移行する。
【0215】
他方、上記S733で、「ビットインデックス番号」の識別コードを順列部テーブル39の「インデックス番号」としてRAM72に記憶していないと判定した場合、つまり、ビットインデックス番号フラグがOFFに設定されていると判定した場合には(S733:NO)、CPU71は、S735の処理に移行する。
【0216】
S735において、CPU71は、当該検索語の文字列から「格納形式3」の「ビットインデックス部」を作成した後、S734の処理に移行する。つまり、CPU71は、当該検索語の読みに用いる全文字種類(50音では、「あ、い、う、・・・、ん」の仮名である。)に対応するビット配列を有する固定バイト数(50音では、6バイトである。)で構成され、検索語の文字列を構成する文字種類に対応するビットをONに設定し、それ以外のビットをOFFに設定した「ビットインデックス部」を作成した後、S734の処理に移行する。
【0217】
続いて、S734において、CPU71は、上記717でRAMに記憶した「格納形式」が「3」に対応する「インデックス番号」に、当該検索語の文字列から作成した「格納形式3」の「ビットインデックス部」が記憶されているか否かを判定する判定処理を実行する。
【0218】
そして、上記717でRAMに記憶した「格納形式」が「3」に対応する「インデックス番号」に、当該検索語の文字列から作成した「格納形式3」の「ビットインデックス部」が記憶されていないと判定した場合には(S734:NO)、CPU71は、検索語入力画面81の件数表示部87に、候補施設名が無い旨を表す「該当件数:無し」を表示した後、当該処理を終了する。
【0219】
一方、上記717でRAMに記憶した「格納形式」が「3」に対応する「インデックス番号」に、当該検索語の文字列から作成した「格納形式3」の「ビットインデックス部」が記憶されていると判定した場合には(S734:YES)、CPU71は、S736の処理に移行する。S736において、CPU71は、当該検索語の文字列から「格納形式3」の「順列部」を作成する。つまり、CPU71は、検索語の文字列の各文字を、「格納形式3」の「ビットインデックス部」でONに設定された文字種類中での順番を示すことができるビット数の数値で各文字の順番を表した「順列部」を作成してRAM72に記憶する。
【0220】
続いて、S737において、CPU71は、上記S717でRAMに記憶した「格納形式」が「3」に対応する「インデックス番号」のうち、当該「ビットインデックス番号」の識別コード、又は、当該検索語の文字列から作成した「格納形式3」の「ビットインデックス部」が記憶されている「インデックス番号」に対応する全ての「順列部」についてS738以降の処理を実行したか否かを判定する判定処理を実行する。
【0221】
そして、当該「ビットインデックス番号」の識別コード、又は、当該検索語の文字列から作成した「格納形式3」の「ビットインデックス部」が記憶されている「インデックス番号」に対応する全ての「順列部」についてS738以降の処理を実行したと判定した場合には(S737:YES)、CPU71は、検索語入力画面81の件数表示部87に、候補施設名が無い旨を表す「該当件数:無し」を表示した後、当該処理を終了する。
【0222】
一方、当該「ビットインデックス番号」の識別コード、又は、当該検索語の文字列から作成した「格納形式3」の「ビットインデックス部」が記憶されている「インデックス番号」に対応する全ての「順列部」についてS738以降の処理を実行していないと判定した場合には(S737:NO)、CPU71は、S738の処理に移行する。S738において、CPU71は、当該「ビットインデックス番号」の識別コード、又は、当該検索語の文字列から作成した「格納形式3」の「ビットインデックス部」が記憶されている「インデックス番号」に対応する全ての「順列部」のうち、残っている次の「順列部」を読み出す。
【0223】
続いて、S739において、CPU71は、この読み出した「順列部」と上記S736で検索語の文字列から作成した「順列部」とが一致するか否かを判定する判定処理を実行する。そして、この読み出した「順列部」と上記S736で検索語の文字列から作成した「順列部」とが一致していないと判定した場合には(S739:NO)、CPU71は、再度S737以降の処理を実行する。
【0224】
一方、この読み出した「順列部」と上記S736で検索語の文字列から作成した「順列部」とが一致すると判定した場合には(S739:YES)、CPU71は、S740の処理に移行する。S740において、CPU71は、上記S717で記憶した「格納形式」、「インデックス番号」、「順列部」、「該当件数」、「次文字」の各データから、この読み出した「順列部」に対応付けて記憶されている「該当件数」と「次文字」の各データをRAM72から読み出す。
そして、S741において、CPU71は、上記S723の処理を実行した後、当該処理を終了する。
【0225】
以上詳細に説明した通り、本実施例に係る情報作成装置1では、CPU21は、キーワードの文字列を順列部テーブル39に記憶する際の格納形式1乃至格納形式3のそれぞれで表した場合について、各格納形式1〜3のデータサイズ(バイト数)を算出する。そして、CPU21は、キーワードの文字列を順列部テーブル39に記憶する際の格納形式2又は格納形式3のデータサイズが、キーワードの文字列の文字数を1バイトで表した「文字数」と、この文字列の各文字を1バイトの文字コードで表した「順列部」とから構成した格納形式1のデータサイズよりも少ない場合には、キーワードの文字列を格納形式2又は格納形式3で順列部テーブル39に記憶する。
【0226】
これにより、キーワードの文字列の各文字を1バイトの文字コードで記憶する格納形式1だけでなく、キーワードの文字列を格納形式2又は格納形式3で順列部テーブル39に記憶することが可能となり、検索対象となるキーワードの文字列を「順列部」に記憶する順列部テーブル39のデータサイズを大幅に削減して、検索情報DB28のメモリ容量の増大を抑止することが可能となる。
【0227】
従って、ナビゲーション装置2のCPU71が、順列部テーブル39等を格納するナビ側検索情報DB54のメモリ容量の増大も抑止することが可能となる。また、ナビゲーション装置2のCPU71が、ナビ側検索情報DB54に格納した順列部テーブル39から検索語の文字数に対応する全データを抽出して、展開するために必要なRAM72のメモリ容量の増大も抑止することが可能となる。
【0228】
また、キーワードの文字列を順列部テーブル39に記憶する際の格納形式2の「文字インデックス部」のデータサイズが、格納形式3の「ビットインデックス部」のデータサイズ以下場合には、CPU21は、当該キーワードの文字列を順列部テーブル39に記憶する形式を格納形式2に設定する。これにより、CPU21は、文字インデックス部テーブル35を迅速に作成することができると共に、文字インデックス部テーブル35のデータサイズの削減化を図り、検索情報DB28のメモリ容量の増大を抑止することが可能となる。
【0229】
また、キーワードの文字列を順列部テーブル39に記憶する際の格納形式2の「文字インデックス部」のデータサイズが、格納形式3の「ビットインデックス部」のデータサイズより大きい場合には、CPU21は、当該キーワードの文字列を順列部テーブル39に記憶する形式を格納形式3に設定する。これにより、CPU21は、ビットインデックス部はキーワードの読みに用いる全文字種類(50音では、「あ、い、う、・・・、ん」の仮名である。)に対応するビット配列を有する固定バイト数(50音では、6バイトである。)で構成されるため、ビットインデックス部テーブル38のデータサイズの削減化を図り、検索情報DB28のメモリ容量の増大を抑止することが可能となる。
【0230】
また、上記S218において、一方のインデックス候補の文字種類の全てが他方のインデックス候補の文字種類に含まれる場合には、この一方のインデックス候補に替えて当該他方のインデックス候補を抽出して文字インデックス部テーブル35又はビットインデックス部テーブル38を作成するため、各テーブル35、38のデータサイズの更なる削減化を図り、検索情報DB28のメモリ容量の増大を抑止することが可能となる。
【0231】
従って、ナビゲーション装置2のCPU71が、文字インデックス部テーブル35、ビットインデックス部テーブル38等を格納するナビ側検索情報DB54のメモリ容量の増大も更に抑止することが可能となる。また、ナビゲーション装置2のCPU71が、ナビ側検索情報DB54に格納した各テーブル35、38から検索語の文字数に対応する階乗個数の全データを抽出して、展開するために必要なRAM72のメモリ容量の増大も抑止することが可能となる。
【0232】
尚、本発明は前記実施例に限定されるものではなく、本発明の要旨を逸脱しない範囲内で種々の改良、変形が可能であることは勿論である。例えば、以下のようにしてもよい。
【0233】
[他の実施例1]
(A)例えば、上記S118のサブ処理を実行せず、統合カウントテーブル34を作成しないようにしてもよい。そして、上記S120において、統合カウントテーブル34の「インデックス候補」に替えて、インデックスカウントテーブル33の「インデックス内容」を用い、統合カウントテーブル34の「カウント値」に替えて、インデックスカウントテーブル33の「カウント値」を用いて、共有インデックスデータとしての文字インデックス部テーブル35を作成するようにしてもよい。そして、文字インデックス部テーブル35のインデックスコードとしての「文字インデックス番号」に、インデックス内容を識別する識別コードを記憶した後、再度S119以降の処理を実行するようにしてもよい。
【0234】
また、上記S318のサブ処理を実行せず、統合カウントテーブル37を作成しないようにしてもよい。そして、上記S320において、統合カウントテーブル37の「インデックス候補」に替えて、インデックスカウントテーブル36の「インデックス内容」を用い、統合カウントテーブル38の「カウント値」に替えて、インデックスカウントテーブル36の「カウント値」を用いて、共有インデックスデータとしてのビットインデックス部テーブル38を作成するようにしてもよい。そして、ビットインデックス部テーブル38のインデックスコードとしての「ビットインデックス番号」に、インデックス内容を識別する識別コードを記憶した後、再度S319以降の処理を実行するようにしてもよい。
【0235】
これにより、文字インデックス部テーブル35とビットインデックス部テーブル38を迅速に作成することができると共に、順列部テーブル39を迅速に作成することができる。また、キーワードの文字列の各文字を1バイトの文字コードで記憶する格納形式1だけでなく、キーワードの文字列を格納形式2又は格納形式3で順列部テーブル39に記憶することが可能となり、検索対象となるキーワードの文字列を「順列部」に記憶する順列部テーブル39のデータサイズを大幅に削減して、検索情報DB28のメモリ容量の増大を抑止することが可能となる。
【0236】
従って、ナビゲーション装置2のCPU71が、順列部テーブル39等を格納するナビ側検索情報DB54のメモリ容量の増大も抑止することが可能となる。また、ナビゲーション装置2のCPU71が、ナビ側検索情報DB54に格納した順列部テーブル39から検索語の文字数に対応する全データを抽出して、展開するために必要なRAM72のメモリ容量の増大も抑止することが可能となる。
【0237】
[他の実施例2]
(B)また、文字インデックス部テーブル35又はビットインデックス部テーブル38の一方だけを作成するようにしてもよい。そして、検索対象となるキーワードの文字列を順列部テーブル39に記憶する際の格納形式を格納形式1及び格納形式2、又は、格納形式1及び格納形式3にするようにしてもよい。
【0238】
これにより、検索対象となるキーワードの文字列を順列部テーブル39に記憶する際の格納形式を格納形式1のみにした場合よりも、順列部テーブル39のデータサイズを削減して、検索情報DB28のメモリ容量の増大を抑止することが可能となる。従って、ナビゲーション装置2のCPU71が、順列部テーブル39等を格納するナビ側検索情報DB54のメモリ容量の増大も抑止することが可能となる。
【0239】
また、ナビゲーション装置2のCPU71が、ナビ側検索情報DB54に格納した順列部テーブル39から検索語の文字数に対応する全データを抽出して、展開するために必要なRAM72のメモリ容量の増大も抑止することが可能となる。
【符号の説明】
【0240】
1 情報作成装置
11 データ記録部
19 カードR/W部
27 施設名DB
28 検索情報DB
21 CPU
22 RAM
23 ROM
31 施設名データテーブル
32 階乗個数テーブル
33、36 インデックスカウントテーブル
34、37 統合カウントテーブル
35 文字インデックス部テーブル
38 ビットインデックス部テーブル
39 順列部テーブル

【特許請求の範囲】
【請求項1】
検索対象となる検索語の読みの文字列を取得する文字列取得手段と、
前記文字列を、前記検索語の読みとして利用可能な全文字種類をそれぞれ識別する全文字コードの順列にて表した第1順列部から構成された第1格納情報を作成する第1格納情報作成手段と、
前記文字列を構成する文字種類を表したインデックス部と、該文字列を前記インデックス部における文字種類をそれぞれ識別する識別ビットコードの順列にて表した第2順列部とから構成された第2格納情報を作成する第2格納情報作成手段と、
前記第1格納情報のデータサイズが前記第2格納情報のデータサイズ以下の場合には、前記検索語の読みの文字列として前記第1格納情報を記憶し、
前記第1格納情報のデータサイズが前記第2格納情報のデータサイズよりも大きい場合には、前記検索語の読みの文字列として前記第2格納情報を記憶する検索情報記憶手段と、
を備えたことを特徴とする検索情報作成装置。
【請求項2】
前記第2格納情報作成手段は、
前記文字列を構成する文字種類の種類数に対応し、該文字列を構成する各文字種類をそれぞれ識別する部分文字コードで表した文字インデックス部を作成する文字インデックス部作成手段と、
前記検索語の読みとして利用可能な全文字種類に対応するビット配列を有し、前記ビット配列の各ビットのうち、前記文字列を構成する各文字種類に対応するビットをONに設定し、それ以外のビットをOFFに設定したビットインデックス部を作成するビットインデックス部作成手段と、
を有し、
該第2格納情報作成手段は、
前記文字インデックス部のデータサイズが前記ビットインデックス部のデータサイズ以下の場合には、該文字インデックス部を前記インデックス部として設定し、
前記文字インデックス部のデータサイズが前記ビットインデックス部のデータサイズよりも大きい場合には、該ビットインデックス部を前記インデックス部として設定することを特徴とする請求項1に記載の検索情報作成装置。
【請求項3】
前記第2格納情報作成手段は、前記文字列を構成する文字種類の種類数に対応し、該文字列を構成する各文字種類をそれぞれ識別する部分文字コードで表した文字インデックス部を作成する文字インデックス部作成手段を有し、
該第2格納情報作成手段は、前記文字インデックス部を、前記インデックス部として設定することを特徴とする請求項1に記載の検索情報作成装置。
【請求項4】
前記第2格納情報作成手段は、前記検索語の読みとして利用可能な全文字種類に対応するビット配列を有し、前記ビット配列の各ビットのうち、前記文字列を構成する各文字種類に対応するビットをONに設定し、それ以外のビットをOFFに設定したビットインデックス部を作成するビットインデックス部作成手段を有し、
該第2格納情報作成手段は、前記ビットインデックス部を前記インデックス部として設定することを特徴とする請求項1に記載の検索情報作成装置。
【請求項5】
複数の検索語のそれぞれの前記第2格納情報を構成する各インデックス部のうち、複数の検索語において共通するインデックス部を抽出して格納した共有インデックスデータを記憶する共有インデックス記憶手段を備え、
前記検索情報記憶手段は、前記共通するインデックス部を有する前記第2格納情報については、当該共通するインデックス部に替えて、前記共有インデックスデータにおける該共通するインデックス部を示すインデックスコードを記憶することを特徴とする請求項1乃至請求項4のいずれかに記載の検索情報作成装置。
【請求項6】
複数の検索語のそれぞれの前記第2格納情報を構成する各インデックス部のうち、複数の検索語において共通するインデックス部を抽出して格納した共有インデックスデータを作成する共有インデックスデータ作成手段と、
前記共有インデックスデータに格納されている複数のインデックス部のうち、一方のインデックス部の文字種類の全てが他方のインデックス部の文字種類に含まれる包含関係にあるインデックス部が存在するか否かを判定する包含関係判定手段と、
一方のインデックス部の文字種類の全てが他方のインデックス部の文字種類に含まれる包含関係にあるインデックス部が存在すると判定された場合には、当該他方のインデックス部を抽出して統合インデックス部として格納した統合インデックスデータを記憶する統合インデックス部記憶手段と、を備え、
前記検索情報記憶手段は、インデックス部の文字種類の全てが、前記統合インデックスデータに格納されている前記統合インデックス部の文字種類に含まれる包含関係にある前記第2格納情報については、当該インデックス部に替えて、前記統合インデックスデータにおける当該統合インデックス部を示すインデックスコードを記憶すると共に、前記第2順列部に替えて、前記文字列を当該統合インデックス部における文字種類をそれぞれ識別する識別ビットコードの順列にて表した第3順列部を記憶することを特徴とする請求項1乃至請求項4のいずれかに記載の検索情報作成装置。
【請求項7】
前記検索情報記憶手段は、前記検索語の文字列を含む候補施設名に関する検索補助情報を前記第1格納情報又は前記第2格納情報に関連付けて記憶することを特徴とする請求項1乃至請求項6のいずれかに記載の検索情報作成装置。
【請求項8】
検索対象となる検索語の読みの文字列を取得する文字列取得工程と、
前記文字列取得工程で取得した文字列を、前記検索語の読みとして利用可能な全文字種類をそれぞれ識別する全文字コードの順列にて表した第1順列部から構成された第1格納情報を作成する第1格納情報作成工程と、
前記文字列取得工程で取得した文字列を構成する文字種類を表したインデックス部と、該文字列を前記インデックス部における文字種類をそれぞれ識別する識別ビットコードの順列にて表した第2順列部とから構成された第2格納情報を作成する第2格納情報作成工程と、
前記第1格納情報作成工程で作成した第1格納情報のデータサイズが、前記第2格納情報作成工程で作成した第2格納情報のデータサイズ以下の場合には、前記検索語の読みの文字列として前記第1格納情報を記憶し、
前記第1格納情報作成工程で作成した第1格納情報のデータサイズが、前記第2格納情報作成工程で作成した第2格納情報のデータサイズよりも大きい場合には、前記検索語の読みの文字列として前記第2格納情報を記憶する検索情報記憶工程と、
を備えたことを特徴とする検索情報作成方法。
【請求項9】
コンピュータに、
検索対象となる検索語の読みの文字列を取得する文字列取得工程と、
前記文字列取得工程で取得した文字列を、前記検索語の読みとして利用可能な全文字種類をそれぞれ識別する全文字コードの順列にて表した第1順列部から構成された第1格納情報を作成する第1格納情報作成工程と、
前記文字列取得工程で取得した文字列を構成する文字種類を表したインデックス部と、該文字列を前記インデックス部における文字種類をそれぞれ識別する識別ビットコードの順列にて表した第2順列部とから構成された第2格納情報を作成する第2格納情報作成工程と、
前記第1格納情報作成工程で作成した第1格納情報のデータサイズが、前記第2格納情報作成工程で作成した第2格納情報のデータサイズ以下の場合には、前記検索語の読みの文字列として前記第1格納情報を記憶し、
前記第1格納情報作成工程で作成した第1格納情報のデータサイズが、前記第2格納情報作成工程で作成した第2格納情報のデータサイズよりも大きい場合には、前記検索語の読みの文字列として前記第2格納情報を記憶する検索情報記憶工程と、
を実行させるためのプログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate

【図15】
image rotate

【図16】
image rotate

【図17】
image rotate

【図18】
image rotate

【図19】
image rotate

【図20】
image rotate

【図21】
image rotate

【図22】
image rotate

【図23】
image rotate

【図24】
image rotate

【図25】
image rotate

【図26】
image rotate

【図27】
image rotate

【図28】
image rotate


【公開番号】特開2012−215955(P2012−215955A)
【公開日】平成24年11月8日(2012.11.8)
【国際特許分類】
【出願番号】特願2011−79160(P2011−79160)
【出願日】平成23年3月31日(2011.3.31)
【出願人】(000100768)アイシン・エィ・ダブリュ株式会社 (3,717)
【Fターム(参考)】