"検索対象文字列の第1の検索用データと、1以上第1の所定文字数以下の整数Nの各々について各前記検索対象文字列におけるN文字以降の文字の順番を入れ替えた反転文字列についての第2の検索用データとを格納する第1のデータ格納部と、前記第1のデータ格納部に格納されている前記第1の検索用データに対して検索文字列の前方一致検索を行って、第2の所定文字数以上前方一致する検索対象文字列を検出し、検出された前記検索対象文字列の識別子を第2のデータ格納部に格納する第1の検索部と、前記検索文字列における整数M文字以降の文字の順番を入れ替えた検索キーの前方一致検索を、前記第1のデータ格納部に格納されている前記整数Mについての前記第2の検索用データに対して行って、前記第2の所定文字数以上前方一致する反転文字列を検出し、検出された前記反転文字列に対応する前記検索対象文字列の識別子を前記第2のデータ格納部に格納し、前記整数M-2文字一致した反転文字列が存在するか否かを判断する第2の検索部と、前記第2の検索部に対して、前記第2の所定文字数から1まで前記第2の所定文字数から1までのうち整数Mについての検索指示を、前記第2の検索部により前記整数M-2文字一致した反転文字列が存在しないと判断された直後を除き出力する制御部と、を有する検索装置。前記第2の検索用データが前記検索対象文字列の末尾文字の種類毎にグループ化されており、前記第2の検索部が、前記検索文字列の末尾文字と一致する末尾文字の種類のグループに属する前記第2の検索用データに対して前方一致検索を実施する請求項1記載の検索装置。1以上第1の所定文字数以下の整数Nの各々について各前記検索対象文字列におけるN文字以降の文字の順番を入れ替えた反転文字列を生成し、当該反転文字列をソートして前記第2の検索用データを生成する検索用データ生成部をさらに有する請求項1又は2記載の検索装置。前記検索対象文字列の末尾文字の種類毎に前記検索対象文字列をグループ化し、当該グループの各々について、1以上第1の所定文字数以下の整数Nの各々について当該グループに属する各前記検索対象文字列におけるN文字以降の文字の順番を入れ替えた反転文字列を生成し、当該反転文字列をソートして前記第2の検索用データを生成する検索用データ生成部をさらに有する請求項2記載の検索装置。検索対象文字列の第1の検索用データと、1以上第1の所定文字数以下の整数Nの各々について各前記検索対象文字列におけるN文字以降の文字の順番を入れ替えた反転文字列についての第2の検索用データとを格納する第1のデータ格納部に格納されている前記第1の検索用データに対して検索文字列の前方一致検索を行って、第2の所定文字数以上前方一致する検索対象文字列を検出し、検出された前記検索対象文字列の識別子を第2のデータ格納部に格納するステップと、前記第2の所定文字数から1まで前記第2の所定文字数から1までのうち整数Mについての検索処理を、当該検索処理において前記整数M-2文字一致した反転文字列が存在しないと判断された直後を除き実施するステップと、を含み、前記検索処理が、前記検索文字列における整数M文字以降の文字の順番を入れ替えた検索キーの前方一致検索を、前記第1のデータ格納部に格納されている前記整数Mについての前記第2の検索用データに対して行って、前記第2の所定文字数以上前方一致する反転文字列を検出し、検出された前記反転文字列に対応する前記検索対象文字列の識別子を前記第2のデータ格納部に格納し、前記整数M-2文字一致した反転文字列が存在するか否かを判断する処理であり、コンピュータにより実行される検索処理方法。検索対象文字列の第1の検索用データと、1以上第1の所定文字数以下の整数Nの各々について各前記検索対象文字列におけるN文字以降の文字の順番を入れ替えた反転文字列についての第2の検索用データとを格納する第1のデータ格納部に格納されている前記第1の検索用データに対して検索文字列の前方一致検索を行って、第2の所定文字数以上前方一致する検索対象文字列を検出し、検出された前記検索対象文字列の識別子を第2のデータ格納部に格納するステップと、前記第2の所定文字数から1まで前記第2の所定文字数から1までのうち整数Mについての検索処理を、当該検索処理において前記整数M-2文字一致した反転文字列が存在しないと判断された直後を除き実施するステップと、をコンピュータに実行させ、前記検索処理が、前記検索文字列における整数M文字以降の文字の順番を入れ替えた検索キーの前方一致検索を、前記第1のデータ格納部に格納されている前記整数Mについての前記第2の検索用データに対して行って、前記第2の所定文字数以上前方一致する反転文字列を検出し、検出された前記反転文字列に対応する前記検索対象文字列の識別子を前記第2のデータ格納部に格納し、前記整数M-2文字一致した反転文字列が存在するか否かを判断する処理である検索処理プログラム。従って、本技術の目的は、一側面において、高速に類似する文字列の検索を行うための技術を提供することである。本検索装置は、A検索対象文字列の第1の検索用データと、1以上第1の所定文字数以下の整数Nの各々について各前記検索対象文字列におけるN文字以降の文字の順番を入れ替えた反転文字列についての第2の検索用データとを格納する第1のデータ格納部と、B第1のデータ格納部に格納されている第1の検索用データに対して検索文字列の前方一致検索を行って、第2の所定文字数以上前方一致する検索対象文字列を検出し、検出された検索対象文字列の識別子を第2のデータ格納部に格納する第1の検索部と、C検索文字列における整数M文字以降の文字の順番を入れ替えた検索キーの前方一致検索を、データ格納部に格納されている整数Mについての第2の検索用データに対して行って、第2の所定文字数以上前方一致する反転文字列を検出し、検出された反転文字列に対応する検索対象文字列の識別子を第2のデータ格納部に格納し、整数M-2文字一致した反転文字列が存在するか否かを判断する第2の検索部と、D第2の検索部に対して、第2の所定文字数から1まで当該第2の所定文字数から1までのうち整数Mについての検索指示を、第2の検索部により整数M-2文字一致した反転文字列が存在しないと判断された直後を除き出力する制御部とを有する。高速に類似する文字列の検索を行うことができるようになる。名寄せの目的となるデータベースへのデータ入力において、入力ミス等が同一レコードの同一属性で複数回起きる可能性は小さいので、属性毎の文字列において相違箇所は高々1カ所で、且つ相違箇所の長さは文字列全体と比べて小さいという仮定を導入しても、大きな問題はないと考えられる。相違箇所が1カ所であるなら、相違箇所は、先頭から比較したとき最初に異なる文字が現れる位置から、末尾から比較したときに最初に異なる文字が現れる位置までの区間である。従って、単純な検索方法では、前方一致検索と後方一致検索とを組み合わせることになる。例えば、図1に示すように、文字列Sと文字列Tとを比較する場合には、前方から後方に向けてabが一致しており、後方から前方に向けてgfが一致しているということで、図1の例では、2文字ずつ一致しているでの合計4文字一致していると判断する。本実施の形態では、条件先頭からの文字の一致数末端からの文字の一致数≧最低一致文字数を満たすような文字列を高速に抽出するために、以下のような処理を実施する。具体的には、図2に示すように、aに示すような検索対象文字列に対して、gに示すような検索文字列abcdeが入力されて、4文字以上一致する文字列を抽出する場合の処理について説明する。本実施の形態では、aをそのまま辞書順でソートした結果bと、検索対象文字列の4文字目以降の文字の順番を反転させた反転文字列について辞書順にソートした結果cと、検索対象文字列の3文字目以降の文字の順番を反転させた反転文字列について辞書順にソートした結果dと、検索対象文字列の2文字目以降の文字の順番を反転させた反転文字列について辞書順にソートした結果eと、検索対象文字列の1文字目以降の文字の順番を反転させた反転文字列について辞書順にソートした結果fとを用意する。そして、検索文字列の先頭4文字abcdでbを検索して、4文字以上前方一致する検索対象文字列を抽出する。この例ではID5のabcdgが特定される。さらに、検索文字列の4文字目以降の文字の順番を反転させた反転文字列iabcedの先頭4文字abceでcを検索して、4文字以上前方一致する反転文字列を検出する。この例ではID4のabcegが特定される。なお、本実施の形態では、反転位置切断点とも呼ぶ4-2=2文字一致している反転文字列が存在するかを判断する。cには存在しないことが分かる。存在しない場合には、以下で述べる理由で反転位置3についての検索処理をスキップする。一方、存在する場合には、反転位置3についての検索処理を実施する。このように途中で検索処理をスキップする理由を図3A乃至図3Dを用いて説明する。例えば図3Aの左側に示すように、切断点反転位置が4文字目であり、先頭5文字一致である場合、図3Aの右側に示すように、切断点反転位置が3文字目になると、先頭4文字一致になってしまう。すなわち、一致数≧切断点-1の時には、切断点を先頭方向に1ずらすと一致数は必ず1減少してしまう。また、図3Bの左側に示すように、切断点反転位置が4文字目であり、先頭1文字一致である場合、図3Bの右側に示すように、切断点反転位置が3文字目になると、先頭1文字一致は変わらない。すなわち、一致数<切断点-2の時には、切断点を先頭方向に1ずらしても、一致数は変化しない。さらに、図3Cの左側に示すように、切断点反転位置が4文字目であり、先頭2文字が一致する場合、図3Cの右側に示すように、切断点反転位置が3の時には、先頭2文字一致は変わらない。なお、上段の元々の文字列はabcdefgであり、下段の元々の文字列はabhefkであり、末尾文字は不一致である。すなわち、一致数=切断点-2の時であって、末尾文字が不一致である場合には、切断点を先頭方向に1ずらしても、一致数は変化しない。一方、図3Dでは、上段の元々の文字列はabcdefgであり、下段の元々の文字列はabhefgであり、末尾文字が一致している。このような場合、図3Dの左側に示すように、切断点反転位置が4文字目であり、先頭2文字が一致する場合、図3Dの右側に示すように、切断点反転位置が3の時には、先頭5文字一致になる。このように、一致数=切断点-2の時、元々の文字列の末尾文字が一致していれば、切断点を左にシフトした場合に一致数が増加し、末尾文字が一致していなければ、切断点を左にシフトした場合に一致数は変化しない、という特性があることが分かる。従って、末尾文字が一致しているか否かに拘わらず、末尾文字が一致している検索対象文字列に対して前方一致検索を行って、一致文字数が切断点-2となる検索対象文字列が存在していれば、切断点を左にシフトした場合において前方一致検索を実施すれば目的の検索対象文字列が得られる可能性がある。なお、末尾文字が一致している検索対象文字列に対してのみ前方一致検索を行うことができるのであれば、より効率的に目的の検索対象文字列が得られるということになる。図2の説明に戻って、上でも述べたように、cには切断点4-2=2文字一致の反転文字列は存在していないので、切断点3=現在の切断点4-1についての前方一致検索はスキップできる。次に、検索文字列の2文字目以降の文字の順番を反転させた反転文字列kaedcbの先頭4文字aedcでeを検索して、4文字以上前方一致する反転文字列を検出する。ここでは該当する反転文字列は存在しない。また、切断点2-2=0文字一致の反転文字列が存在するか判断する。図2のeの反転文字列の中にはbebdcが該当するので、切断点1の前方一致検索については実行することになる。そして、検索文字列の1文字目以降の文字の順番を反転させた反転文字列ledcbaの先頭4文字edcbでfを検索して、4文字以上前方一致する反転文字列を検出する。ここでは該当する反転文字列は存在しない。このようにして、最終的な検索結果としては、ID4及び5の検索対象文字列が得られることになる。このような処理を実施すれば実施すべき前方一致検索が間引かれて、処理負荷が削減され、検索処理が高速化される。なお、前方一致で最低一致文字数を満足する場合を除き、図1に示すように、文字列の中間部分で文字列の不一致が発生している場合に、最低一致文字数を満足するのは、検索対象文字列の末尾文字と検索文字列の末尾文字とが一致している場合のみである。図3A乃至3Dの観点からも末尾文字が一致しているか否かが分かれば、処理負荷をさらに削減することができる。従って、予め検索対象文字列を、末尾文字の種類毎にグループ化しておけば、前方一致検索を行うべき検索対象文字列の数をさらに削減できる。以上のような観点から、図4乃至図19に示すような検索装置を導入するものとする。図4に示すように、本実施の形態に係る検索装置1000は、検索対象文字列格納部3000に格納されている検索対象文字列から検索用データを生成する検索用データ生成部1100と、検索用データ生成部1100によって生成された検索用データを格納する検索用データ格納部1200と、検索条件入力を受け付け且つ検索用データ格納部1200に対して以下で述べる検索処理を実施する検索処理部1300と、検索処理部1300の検索結果を格納する検索結果格納部1400と、検索結果格納部1400に格納されている検索結果を検索用データ格納部1200に基づき出力する出力部1500とを有する。図5に示すように、検索用データ生成部1100は、データ読込部1110と、データ分割部1120と、文字列グループ格納部1130と、文字反転部1140と、反転文字列格納部1150と、ソート処理部1160とを有する。データ読込部1110は、検索対象文字列格納部3000から検索対象文字列を読み出してデータ分割部1120とソート処理部1160に出力する。データ分割部1120は、データ読込部1110から得られた検索対象文字列をグループ化する処理を実施し、処理結果を文字列グループ格納部1130に格納する。文字列反転部1140は、文字列グループ格納部1130に格納されているデータに基づき、文字列グループ毎に、所属する検索対象文字列に対して以下で説明する文字反転処理を実施し、処理結果を反転文字列格納部1150に格納する。ソート処理部1160は、反転文字列格納部1150に格納されている反転文字列をグループ毎にソートして検索インデックスのデータを生成し、検索用データ格納部1200に格納する。また、図6に示すように、検索処理部1300は、検索条件取得部1310と、検索部1320と、制御部1340とを有する。検索条件取得部1310は、検索条件入力を受け付け、検索部1320と制御部1340とに出力する。検索部1320は、第1検索部1321と、第2検索部1322とを有する。第1検索部1321は、検索文字列について、検索用データ格納部1200に格納されている検索用データに対して前方一致検索を行い、検索結果を検索結果格納部1400に格納する。第2検索部1322は、制御部1340からの指示に従って、検索用データ格納部1200に格納されている検索用データに対して前方一致検索を行って、検索結果を検索結果格納部1400に格納する。なお、検索結果のうち一部のデータについては制御部1340に出力する。制御部1340は、検索キー生成部1341と、条件判定部1342とを有している。検索キー生成部1341は、検索文字列の一部の文字を反転させて検索キーを生成する。また、条件判定部1342は、検索キーの出力前に、以下で詳細に説明する条件を満たしているか否かを判断する。なお、第2検索部1322に前方一致検索を実施させるか否かを判断するための検索フラグについては、制御部1340及び第2検索部1322が参照可能なメモリの領域に用意されているものとする。以下、検索装置1000の処理内容を図7乃至図19を用いて説明する。まず、検索用データ生成部1100の処理を図7乃至図14を用いて説明する。データ読込部1110は、検索対象文字列格納部3000から、検索対象文字列を読み込み、データ分割部1120及びソート処理部1160に出力する図7:ステップS1。例えば、図8に示すような検索対象文字列が読み込まれたものとする。そして、ソート処理部1160は、検索対象文字列をデータ読込部1110から取得し、当該検索対象文字列を辞書順でソートして、切断なしの前方一致検索用のインデックスデータを生成し、検索用データ格納部1200に格納するステップS3。図8のような検索対象文字列の場合には、図9に示すような形で通常の辞書順にソートされる。このようなソート後のデータからインデックスデータを生成する。また、データ分割部1120は、検索対象文字列をデータ読込部1110から取得し、当該検索対象文字列を、その末尾の文字でグループ化するステップS5。図8の例であれば、末尾文字がgのグループ図10Aと、eのグループ図10Bとがあるので、2つのグループに分けられる。グループ分けについては、様々なバリエーションが可能である。例えば、異なる文字毎にグループを生成しても良いし、複数の種類の文字を纏めてグループ化するようにしてもよい。グループ化の結果については、グループ毎に検索対象文字列を文字列グループ格納部1130に格納する。次に、文字反転部1140は、未処理のグループを1つ特定するステップS7。そして、文字反転部1140は、特定されたグループ内の最長文字列長-1をNに設定するステップS9。端子Aを介して図11の処理に移行する。図11の処理の説明に移行して、文字反転部1140は、カウンタiを1に初期化するステップS11。そして、文字反転部1140は、特定されたグループ内の各検索対象文字列について、i文字目以降を反転させた反転文字列を生成し、反転文字列格納部1150に格納するステップS13。例えば、末尾文字がeであるグループを処理する場合、図12のaに示すような検索文字列が処理の対象となる。そして、i=3であれば、3文字目以降の文字の順番を入れ替えて、bに示すような反転文字列が生成される。さらに、ソート処理部1160は、反転文字列格納部1150に格納されており且つ生成した反転文字列を辞書順でソートし、前方一致検索用のインデックスデータを生成して、検索用データ格納部1200に格納するステップS15。図12の例では、ソート結果が図12cのようになる。以上まとめると、例えば、末尾文字がeであるグループを処理する場合、図13に示すように、i=1であればaのようなデータが生成され、i=2であればbのようなデータが生成され、i=3であればcのようなデータが生成され、i=4であればdのようなデータが生成される。また、末尾文字がgであるグループを処理する場合、図14に示すように、i=1であればaのようなデータが生成され、i=2であればbのようなデータが生成され、i=3であればcのようなデータが生成され、i=4であればdのようなデータが生成される。そして、文字反転部1140は、iがN以上となったか判断するステップS17。iがN未満であれば、文字反転部1140は、iを1インクリメントしてステップS13に戻るステップS20。一方、iがN以上である場合、文字反転部1140は、未処理のグループが文字列グループ格納部1130にあるか判断するステップS19。未処理のグループが存在する場合には端子Bを介して図7のステップS7に戻る。一方、未処理のグループが存在しない場合には、処理を終了する。以上のような処理を実施すれば、検索用データ格納部1200には、図9と図13及び図14のような検索用データが格納されることになる。なお、グループ化しない処理の場合には、全検索対象文字列を1つのグループとして設定して、上で述べた処理を実施すればよい。このような場合には、図2上段b乃至fのデータが、図13及び図14のデータの代わりに生成される。次に、図15乃至図19を用いて、検索時の処理について説明する。まず、検索処理部1300の検索条件取得部1310は、検索者からの検索条件検索文字列及び最低一致文字数Lの入力を受け付ける図15:ステップS21。なお、検索装置1000が、ネットワークに接続されており、当該ネットワークに接続されている他の端末から受信するような場合もある。検索条件取得部1310は、取得した検索条件のデータを、制御部1340と検索部1320に出力する。例えば、最小一致文字数L=4で、検索文字列abcdeが入力されたものとする。そして、検索部1320の第1検索部1321は、検索用データ格納部1200における、切断なしの検索用インデックスに対して、検索文字列についての前方一致検索を実施し、L文字以上一致する文字列の識別子を抽出して、検索結果格納部1400に格納するステップS23。例えば図16において、aに示すような切断なしの検索用データに対して、検索文字列fabcdeについて前方一致検索を実施する。より具体的には先頭L文字abcdで前方一致検索を実施する。この場合、ID5が得られる。一方、制御部1340の条件判定部1342は、切断点Nに対して最小一致文字数Lを設定するステップS25。また、制御部1340は、初期的に、次回の前方一致検索を行うべきことを表す検索フラグをセットするステップS27。そして端子Cを介して図17の処理に移行する。そして、制御部1340の条件判定部1342は、N=0であるか判断するステップS29。N=0ではない場合には、条件判定部1342は、検索フラグがセットされているか判断するステップS31。初回は必ず検索フラグがセットされており、ステップS33に移行する。検索フラグがセットされている場合には、条件判定部1342は、検索フラグをオフにセットするステップS32。その後、条件判定部1342は、検索キー生成部1341に対して指示を出力し、この指示に応じて検索キー生成部1341は、検索文字列におけるN文字目以降の文字の順番を反転させた検索キーを生成し、切断点N及び検索文字列の末尾文字と共に検索キーを第2検索部1322に出力するステップS33。そして、第2検索部1322は、切断点及び検索文字列の末尾文字と共に検索キーを制御部1340から受け取ると、検索用データ格納部1200における、検索文字列の末尾文字についてのグループにおける切断点Nのインデックスに対して、検索キーについての前方一致検索を実施し、最低一致文字数L文字以上一致する反転文字列の識別子本実施の形態では元の検索対象文字列と同じを抽出して、検索結果格納部1400に格納するステップS35。末尾文字に応じたグループ分けを行っていない場合には、1つのグループのみが存在するものとして処理すればよい。abcdeが検索文字列であるから末尾がeのグループにおいて、N=4であれば、図16bに示す検索用データに対して前方一致検索を行う。この際4文字目以降の文字が反転されるので、図16gに示すように検索キーはabcedとなる。従って、図18に示すように、ID2の反転文字列についての一致数は1であり、ID4の反転文字列についての一致数は4であり、ID3の反転文字列についての一致数は0となる。従って、ID4が抽出されて、検索結果格納部1400に格納する。また、第2検索部1322は、一致数がN-2の反転文字列が存在しているか判断し、一致数がN-2の反転文字列が存在している場合には検索フラグをセットするステップS37。上でも述べたように、最低一致文字数Lの反転文字列が抽出できる可能性がある場合には検索フラグをセットし、そうでない場合には検索フラグをオフにしたままにする。なお、図18の例では、N=4から2を引いた一致数2の反転文字列が存在していないので、検索フラグはオフのままになる。そして、ステップS41に移行する。ステップS41では、条件判定部1342は、Nを1デクリメントする。その後処理はステップS29に戻る。上で述べている具体例ではN=3については第2検索部1322が前方一致検索を行わないように検索フラグがオフにセットされている。従って、ステップS31では、検索フラグはセットされていないと判断されて、条件判定部1342は、検索フラグをセットするステップS39。一度検索フラグがオフにセットされたからといって以降の前方一致検索を全てスキップできるわけではない。従って、ここで次のNについては前方一致検索を実施すべく、検索フラグをセットする。そしてステップS41に移行する。図16の例でもN=3についての検索キーhについては生成されることなく、検索用データcに対する前方一致検索も行われない。N=2になると、検索フラグがオンになっているので、図16のiで示すような2文字目以降の文字の順番が反転された検索キーが生成される。そして、N=2のための検索用データdに対して検索キーについての前方一致検索を実施する。4文字以上一致する反転文字列は存在しない。なお、この場合、図19に示すように、N=2から2を引いた0文字一致した反転文字列が存在している。従って、検索フラグがセットされる。そうすると、N=1になって、検索フラグがオンになっているので、図16jで示すような1文字目以降の文字の順番が反転された検索キーが生成される。そして、N=1のための検索用データeに対して検索キーについての前方一致検索を実施する。4文字以上一致する反転文字列は存在しない。N=1の場合には、ステップS37の処理についてはスキップしても良い。以上のような処理を実施すれば、検索結果格納部1400には検索対象文字列の識別子{4,5}が格納されることになる。ステップS29で、N=0と判断された場合には、出力部1500は、検索用データ格納部1200から、検索結果格納部1400に格納されている検索対象文字列の識別子に対応する検索対象文字列を抽出して、出力するステップS43。以上のような処理を実施すれば、文字列中高々1カ所しか不一致がないという前提において、前方からの一致文字数と後方からの一致文字数との和が一定以上、という条件を満足する類似文字列を高速に検索することができる。また、前方一致と後方一致の両方を併用することなく、処理も簡略化されている。以上本技術の一実施の形態を説明したが、本技術はこれに限定されるものではない。例えば図4乃至図6の機能ブロック図は一例であって、必ずしも実際のプログラムモジュールと一致しない場合もある。また、処理フローについても、同様の処理結果が得られる限り、ステップの順番を入れ替えたり、並列処理を行っても良い。例えば、第1検索部1321と第2検索部1322についての検索処理については、並列実施するようにしても良い。同様に、1つの検索装置1000に検索用データ生成部1100と検索処理部1300とを実施する場合を示しているが、異なる装置によって実施するようにしても良い。さらに、検索用データ生成部1100の処理についても複数の装置によって実施するようにしても良いし、検索処理部1300の処理についても複数の装置で処理するようにしても良い。なお、上で述べた検索装置1000は、コンピュータ装置であって、図20に示すように、メモリ2501とCPUCentralProcessingUnit2503とハードディスクドライブHDD:HardDiskDrive2505と表示装置2509に接続される表示制御部2507とリムーバブルディスク2511用のドライブ装置2513と入力装置2515とネットワークに接続するための通信制御部2517とがバス2519で接続されている。オペレーティングシステムOS:OperatingSystem及び本実施例における処理を実施するためのアプリケーションプログラムは、HDD2505に格納されており、CPU2503により実行される際にはHDD2505からメモリ2501に読み出される。CPU2503は、アプリケーションプログラムの処理内容に応じて表示制御部2507、通信制御部2517、ドライブ装置2513を制御して、所定の動作を行わせる。また、処理途中のデータについては、主としてメモリ2501に格納されるが、HDD2505に格納されるようにしてもよい。本技術の実施例では、上で述べた処理を実施するためのアプリケーションプログラムはコンピュータ読み取り可能なリムーバブルディスク2511に格納されて頒布され、ドライブ装置2513からHDD2505にインストールされる。インターネットなどのネットワーク及び通信制御部2517を経由して、HDD2505にインストールされる場合もある。このようなコンピュータ装置は、上で述べたCPU2503、メモリ2501などのハードウエアとOS及びアプリケーションプログラムなどのプログラムとが有機的に協働することにより、上で述べたような各種機能を実現する。以上述べた本実施の形態をまとめると以下のようになる。本実施の形態に係る検索装置は、A検索対象文字列の第1の検索用データと、1以上第1の所定文字数以下の整数Nの各々について各前記検索対象文字列におけるN文字以降の文字の順番を入れ替えた反転文字列についての第2の検索用データとを格納する第1のデータ格納部と、B第1のデータ格納部に格納されている第1の検索用データに対して検索文字列例えば検索文字列のうち先頭の第2の所定数部分の前方一致検索を行って、第2の所定文字数以上前方一致する検索対象文字列を検出し、検出された検索対象文字列の識別子を第2のデータ格納部に格納する第1の検索部と、C検索文字列における整数M文字以降の文字の順番を入れ替えた検索キー例えば検索キーのうち先頭の第2の所定数部分の前方一致検索を、データ格納部に格納されている整数Mについての第2の検索用データに対して行って、第2の所定文字数以上前方一致する反転文字列を検出し、検出された反転文字列に対応する検索対象文字列の識別子を第2のデータ格納部に格納し、整数M-2文字一致した反転文字列が存在するか否かを判断する第2の検索部と、D第2の検索部に対して、第2の所定文字数から1まで第2の所定文字数から1までのうち整数Mについての検索指示を、第2の検索部により整数M-2文字一致した反転文字列が存在しないと判断された直後を除き出力する制御部とを有する。このようにすれば第2の検索部による前方一致検索の回数を削減することができるため、検索処理が高速化される。また、上で述べた第2の検索用データが検索対象文字列の末尾文字の種類毎にグループ化されている場合もある。その場合、第2の検索部が、検索文字列の末尾文字と一致する末尾文字の種類のグループに属する第2の検索用データに対して前方一致検索を実施するようにしてもよい。このようにすれば、さらに検索対象文字列を絞り込むことができ、検索処理を高速化することができるようになる。なお、上で述べた制御部が、第2の検索部に対して、第2の所定文字数を整数Mとして検索指示を出力し、第2の検索部により整数M-2文字一致した反転文字列が存在すると判断された場合には、整数M-1を新たな整数Mとして検索指示を第2の検索部に出力し、第2の検索部により整数M-2文字一致した反転文字列が存在しないと判断された場合には、整数M-2を新たな整数Mとして検索指示を第2の検索部に出力するようにしてもよい。さらに、上で述べた検索装置が、1以上第1の所定文字数以下の整数Nの各々について各検索対象文字列におけるN文字以降の文字の順番を入れ替えた反転文字列を生成し、当該反転文字列をソートして第2の検索用データを生成する検索用データ生成部をさらに有するようにしてもよい。これによって、自動的に第2の検索用データが生成されるようになる。また、検索装置が、検索対象文字列の末尾文字の種類毎に検索対象文字列をグループ化し、当該グループの各々について、1以上第1の所定文字数以下の整数Nの各々について当該グループに属する各検索対象文字列におけるN文字以降の文字の順番を入れ替えた反転文字列を生成し、当該反転文字列をソートして第2の検索用データを生成する検索用データ生成部をさらに有するようにしても良い。末尾文字でグループ化する場合においても第2の検索用データが自動的に生成されるようになる。なお、上記処理をコンピュータに行わせるためのプログラムを作成することができ、当該プログラムは、例えばフレキシブルディスク、CD-ROM、光磁気ディスク、半導体メモリ、ハードディスク等のコンピュータ読み取り可能な記憶媒体又は記憶装置に格納される。尚、中間的な処理結果はメインメモリ等の記憶装置に一時保管される。以上の実施例を含む実施形態に関し、さらに以下の付記を開示する。付記1検索対象文字列の第1の検索用データと、1以上第1の所定文字数以下の整数Nの各々について各前記検索対象文字列におけるN文字以降の文字の順番を入れ替えた反転文字列についての第2の検索用データとを格納する第1のデータ格納部と、前記第1のデータ格納部に格納されている前記第1の検索用データに対して検索文字列の前方一致検索を行って、第2の所定文字数以上前方一致する検索対象文字列を検出し、検出された前記検索対象文字列の識別子を第2のデータ格納部に格納する第1の検索部と、前記検索文字列における整数M文字以降の文字の順番を入れ替えた検索キーの前方一致検索を、前記第1のデータ格納部に格納されている前記整数Mについての前記第2の検索用データに対して行って、前記第2の所定文字数以上前方一致する反転文字列を検出し、検出された前記反転文字列に対応する前記検索対象文字列の識別子を前記第2のデータ格納部に格納し、前記整数M-2文字一致した反転文字列が存在するか否かを判断する第2の検索部と、前記第2の検索部に対して、前記第2の所定文字数から1まで前記第2の所定文字数から1までのうち整数Mについての検索指示を、前記第2の検索部により前記整数M-2文字一致した反転文字列が存在しないと判断された直後を除き出力する制御部と、を有する検索装置。付記2前記第2の検索用データが前記検索対象文字列の末尾文字の種類毎にグループ化されており、前記第2の検索部が、前記検索文字列の末尾文字と一致する末尾文字の種類のグループに属する前記第2の検索用データに対して前方一致検索を実施する付記1記載の検索装置。付記3前記制御部が、前記第2の検索部に対して、前記第2の所定文字数を前記整数Mとして検索指示を出力し、前記第2の検索部により前記整数M-2文字一致した反転文字列が存在すると判断された場合には、前記整数M-1を新たな整数Mとして検索指示を前記第2の検索部に出力し、前記第2の検索部により前記整数M-2文字一致した反転文字列が存在しないと判断された場合には、前記整数M-2を新たな整数Mとして検索指示を前記第2の検索部に出力する付記1又は2記載の検索装置。付記41以上第1の所定文字数以下の整数Nの各々について各前記検索対象文字列におけるN文字以降の文字の順番を入れ替えた反転文字列を生成し、当該反転文字列をソートして前記第2の検索用データを生成する検索用データ生成部をさらに有する付記1乃至3のいずれか1つ記載の検索装置。付記5前記検索対象文字列の末尾文字の種類毎に前記検索対象文字列をグループ化し、当該グループの各々について、1以上第1の所定文字数以下の整数Nの各々について当該グループに属する各前記検索対象文字列におけるN文字以降の文字の順番を入れ替えた反転文字列を生成し、当該反転文字列をソートして前記第2の検索用データを生成する検索用データ生成部をさらに有する付記2記載の検索装置。付記6検索対象文字列の第1の検索用データと、1以上第1の所定文字数以下の整数Nの各々について各前記検索対象文字列におけるN文字以降の文字の順番を入れ替えた反転文字列についての第2の検索用データとを格納する第1のデータ格納部に格納されている前記第1の検索用データに対して検索文字列の前方一致検索を行って、第2の所定文字数以上前方一致する検索対象文字列を検出し、検出された前記検索対象文字列の識別子を第2のデータ格納部に格納するステップと、前記第2の所定文字数から1まで前記第2の所定文字数から1までのうち整数Mについての検索処理を、当該検索処理において前記整数M-2文字一致した反転文字列が存在しないと判断された直後を除き実施するステップと、を含み、前記検索処理が、前記検索文字列における整数M文字以降の文字の順番を入れ替えた検索キーの前方一致検索を、前記第1のデータ格納部に格納されている前記整数Mについての前記第2の検索用データに対して行って、前記第2の所定文字数以上前方一致する反転文字列を検出し、検出された前記反転文字列に対応する前記検索対象文字列の識別子を前記第2のデータ格納部に格納し、前記整数M-2文字一致した反転文字列が存在するか否かを判断する処理であり、コンピュータにより実行される検索処理方法。付記7検索対象文字列の第1の検索用データと、1以上第1の所定文字数以下の整数Nの各々について各前記検索対象文字列におけるN文字以降の文字の順番を入れ替えた反転文字列についての第2の検索用データとを格納する第1のデータ格納部に格納されている前記第1の検索用データに対して検索文字列の前方一致検索を行って、第2の所定文字数以上前方一致する検索対象文字列を検出し、検出された前記検索対象文字列の識別子を第2のデータ格納部に格納するステップと、前記第2の所定文字数から1まで前記第2の所定文字数から1までのうち整数Mについての検索処理を、当該検索処理において前記整数M-2文字一致した反転文字列が存在しないと判断された直後を除き実施するステップと、をコンピュータに実行させ、前記検索処理が、前記検索文字列における整数M文字以降の文字の順番を入れ替えた検索キーの前方一致検索を、前記第1のデータ格納部に格納されている前記整数Mについての前記第2の検索用データに対して行って、前記第2の所定文字数以上前方一致する反転文字列を検出し、検出された前記反転文字列に対応する前記検索対象文字列の識別子を前記第2のデータ格納部に格納し、前記整数M-2文字一致した反転文字列が存在するか否かを判断する処理である検索処理プログラム。"