(57)【要約】      （修正有）【課題】コンピューターで使用する文字列等のデーターを高速に検索する為にデーターを分類するソフトウェアを記録した記憶媒体を提供する。【解決手段】符号符号分類検索ソフトウェアを記録した記録媒体は、分類対象文字列を基にハッシュ関数を使用してハッシュ値を複数個求めて、求めた複数個のハッシュ値を使用して分類対象文字列を分類して、データーベースに記録するソフトウェアであり、分類対象文字列を分類して記録したデーターベースから検索したい文字列が何処の分類に属しているかを検索して、属している分類に記録されているデーターの中から検索したい文字列を検索する。【選択図】図１
2019067096.tif 000002
【特許請求の範囲】
【請求項１】
「算出」と、「処理」は、同じ意味として使用しする事とし、コンピューターのメモリーに記録された複数のデーターが記録されたものをデーターベースと呼ぶ事とし、分類しようとするデーターの事を分類対象データーまたは、分類対象文字列と呼ぶ事とし、変数や配列を作成すると記述しているが変数や配列が作成される場所は、コンピューター本体の内部にある本体メモリーに作成される事とし、また、コンピューターで普通に使われているテキスト文字（日本国では、文字コード二文字以上で一文字を表す文字と文字コード一文字で表す半角英数字の文字の事）を、テキスト文字または、文字と略して呼んだり、テキスト文字とリンクされている数値を文字コードと言う事があるとし、文字コードとは、0〜255までの人間が読む事が出来ない機械語の数値であるとする事とし、以下に、変数の型とは、人間が読む事が出来る文字列を代入する事ができる変数の型としてstring型と言う型と、人間が読む事が出来ない数値を代入する事が出来る型とがあるが、変数を作成する場合に、string型の場合のみ「何bitのstring型で変数を作成する」または、「何byteのstring型で変数を作成する」と言う表現でstring型の変数を作成する事とし、string型の変数ではない、人間が読む事が出来ない数値を代入する事が出来る変数を作成する場合は、「何bitの変数を作成する」または、「何byteの変数を作成する」と言う表現で変数を作成する事とし、ファイルを開いたり保存したりする形式には、テキスト形式という形式があり、テキスト形式と指定すると、文字列や文字を自動的に文字コードと言う数値から、人間が読む事ができる文字に変換される形式であり、テキスト形式で1byteずつデーターをファイルに記録して保存すると言う表現で説明する事とし、ファイルを開いたり保存したりする形式には、バイナリー形式と言う形式があり、バイナリー形式を指定すると、人間が読む事ができる文字から、自動的に文字コードと言う人間が読む事が出来ない機械語の数値に変換される形式であり、バイナリー形式でファイルを開いて、1byteずつデーターを読み込むと言う表現で説明する事とし、人間が読む事が出来ない数値を数値と略して表現する場合がある事とし、文字列ファイルには、複数個の分類対象文字列が記録されている事とし、文字列ファイルのデーターを1byteずつ全て読込めるサイズで8bitの配列を作成して、作成した配列を数値１０配列と呼ぶ事し、文字列ファイルをバイナリー形式で開いてファイルに記録されている全てのデーターを1byteずつ最初から最後まで全て読み込んで、数値１０配列の最初から最後の位置までに1byteずつ全てのデーターを代入し、文字列ファイルを一行ずつ読み込む事が出来るサイズで、4byteのstring型の配列を作成し、作成した配列をテキスト配列と呼ぶ事とし、文字列ファイルをテキスト形式で開いてデーターを読み込んで、読込んだデーターを一行ずつ、終端文字と改行文字を除いて、テキスト配列の最初から最後の位置まで順番に代入し、テキスト配列と同じサイズで、4byteのstring型の配列を４個作成し、作成した４個の配列を各々、第１分類配列、第２分類配列、第３分類配列、第４分類配列と呼ぶ事とし、8byteのstring型の変数を２個作成し、作成した２個の変数を各々、第１ハッシュ２進変数、第２���ッシュ２進変数と呼ぶ事とし、２個のサイズで8bitの配列を作成し、作成した配列をハッシュ配列と呼ぶ事とし、ハッシュ配列の最初の位置と最後の位置に-1を代入し、8bitの変数を５個作成し、作成した５個の変数を各々、インデ１変数、インデ２変数、インデ３変数、インデ４変数、インデ５変数と呼ぶ事とし、繰り返し処理を行う事とし、この繰り返し処理をハッシュ分類繰り返し処理と呼ぶ事とし、ハッシュ分類繰り返し処理では、数値１０配列に代入された全てのデーターに、以下の処理を行う事とし、次に、分岐処理を行う事とし、この分岐処理をハッシュ値計算分岐処理と呼ぶ事とし、ハッシュ値計算分岐処理で、数値１０配列のインデックスが0の場合は、数値１０配列のインデックスで取得したデーターを２進数に変換して、変換した２進数が８桁に満たない場合は、変換した２進数の先頭の位置に相当する左側に８桁に満たない分だけ0を連結して８桁に調整し、８桁に調整した２進数の数値の先頭から８桁取得して、第１ハッシュ２進変数に代入し、第１ハッシュ２進変数に代入された２進数の全ての桁の0と1を加算した数値を求めて2で除算した剰余数を求めてハッシュ配列の最初の位置に代入し、第１ハッシュ２進変数に代入された２進数の先頭から７桁分を抽出して第２ハッシュ２進変数に代入し、第２ハッシュ２進変数に代入された２進数を１０進数に変換して、１０進数に変換した数値を2で除算した剰余数を求めてハッシュ配列の最後の位置に代入し、ハッシュ値計算分岐処理で、数値１０配列のインデックスが1以上の場合で、数値１０配列のインデックスで取得したデーターが13の場合か、数値１０配列のインデックスで取得したデーターが10の場合のどちらかの場合は、ハッシュ配列の最初の位置と最後の位置に-1を代入する事とし、ハッシュ値計算分岐処理で、数値１０配列のインデックスが1以上の場合で、数値１０配列のインデックスから-1減算したインデックスで取得したデーターが10の場合は、数値１０配列のインデックスで取得したデーターを２進数に変換して、変換した２進数が８桁に満たない場合は、変換した２進数の先頭の位置に相当する左側に８桁に満たない分だけ0を連結して８桁に調整し、８桁に調整した２進数の数値の先頭から８桁取得して、第１ハッシュ２進変数に代入し、第１ハッシュ２進変数に代入された２進数の全ての桁の0と1を加算した数値を求めて2で除算した剰余数を求めてハッシュ配列の最初の位置に代入し、第１ハッシュ２進変数に代入された２進数の先頭から７桁分を抽出して第２ハッシュ２進変数に代入し、第２ハッシュ２進変数に代入された２進数を１０進数に変換して、１０進数に変換した数値を2で除算した剰余数を求めてハッシュ配列の最後の位置に代入し、ハッシュ値計算分岐処理で、その他の場合は、ハッシュ配列の最初の位置と最後の位置に-1を代入する事とし、ハッシュ値計算分岐処理を終了し、次に、分岐処理を行う事とし、この分岐処理を分類代入分岐処理と呼ぶ事とし、分類代入分岐処理で、ハッシュ配列の最初の位置のデーターとハッシュ配列の最後の位置のデーターが両方とも0の場合は、インデ１変数のデーターをインデックスとして使用してテキスト配列から文字列を取得して、第１分類配列のインデックスとしてインデ２変���のデーターを使用して第１分類配列に代入し、インデ１変数に1を加算し、インデ２変数に1を加算し、ハッシュ配列の最初の位置と最後の位置に-1を代入する事とし、分類代入分岐処理で、ハッシュ配列の最初の位置のデーターが1で、ハッシュ配列の最後の位置のデーターが0の場合は、インデ１変数のデーターをインデックスとして使用してテキスト配列から文字列を取得して、第２分類配列のインデックスとしてインデ３変数のデーターを使用して第２分類配列に代入し、インデ１変数に1を加算し、インデ３変数に1を加算し、ハッシュ配列の最初の位置と最後の位置に-1を代入する事とし、分類代入分岐処理で、ハッシュ配列の最初の位置のデーターが0で、ハッシュ配列の最後の位置のデーターが1の場合は、インデ１変数のデーターをインデックスとして使用してテキスト配列から文字列を取得して、第３分類配列のインデックスとしてインデ４変数のデーターを使用して第３分類配列に代入し、インデ１変数に1を加算し、インデ４変数に1を加算し、ハッシュ配列の最初の位置と最後の位置に-1を代入する事とし、分類代入分岐処理で、ハッシュ配列の最初の位置のデーターとハッシュ配列の最後の位置のデーターが両方とも1の場合は、インデ１変数のデーターをインデックスとして使用してテキスト配列から文字列を取得して、第４分類配列のインデックスとしてインデ５変数のデーターを使用して第４分類配列に代入し、インデ１変数に1を加算し、インデ５変数に1を加算し、ハッシュ配列の最初の位置と最後の位置に-1を代入する事とし、分類代入分岐処理で、ハッシュ配列の最初の位置のデーターとハッシュ配列の最後の位置のデーターのどちらか一方が-1の場合は、何も処理しない事とし、分類代入分岐処理を終わる事とし、数値１０配列のインデックスに1を加算して、ハッシュ分類繰り返し処理の最初の処理に戻って、数値１０配列に代入された次のデーターの処理を行うと言う繰り返し処理を行い、数値１０配列に代入された全てのデーターを処理し終わったら、ハッシュ分類繰り返し処理を終わると言う処理を行う事で、分類対象データーを分類する為に、複数個のハッシュ値を算出して、算出した複数個のハッシュ値を使用して各々の分類対象データーを分類するソフトウェアを記録した記録媒体。
【請求項２】
「算出」と、「処理」は、同じ意味として使用しする事とし、コンピューターのメモリーに記録された複数のデーターが記録されたものをデーターベースと呼ぶ事とし、分類しようとするデーターの事を分類対象データーまたは、分類対象文字列と呼ぶ事とし、変数や配列を作成すると記述しているが変数や配列が作成される場所は、コンピューター本体の内部にある本体メモリーに作成される事とし、また、コンピューターで普通に使われているテキスト文字（日本国では、文字コード二文字以上で一文字を表す文字と文字コード一文字で表す半角英数字の文字の事）を、テキスト文字または、文字と略して呼んだり、テキスト文字とリンクされている数値を文字コードと言う事があるとし、文字コードとは、0〜255までの人間が読む事が出来ない機械語の数値であるとする事とし、以下に、変数の型とは、人間が読む事が出来る文字列を代入する事ができる変数の型としてstring型と言う型と、人間が読む事が出来ない数値を代入する事が出来る型とがあるが、変数を作成する場合に、string型の場合のみ「何bitのstring型で変数を作成する」または、「何byteのstring型で変数を作成する」と言う表現でstring型の変数を作成する事とし、string型の変数ではない、人間が読む事が出来ない数値を代入する事が出来る変数を作成する場合は、「何bitの変数を作成する」または、「何byteの変数を作成する」と言う表現で変数を作成する事とし、ファイルを開いたり保存したりする形式には、テキスト形式という形式があり、テキスト形式と指定すると、文字列や文字を自動的に文字コードと言う数値から、人間が読む事ができる文字に変換される形式であり、テキスト形式で1byteずつデーターをファイルに記録して保存すると言う表現で説明する事とし、ファイルを開いたり保存したりする形式には、バイナリー形式と言う形式があり、バイナリー形式を指定すると、人間が読む事ができる文字から、自動的に文字コードと言う人間が読む事が出来ない機械語の数値に変換される形式であり、バイナリー形式でファイルを開いて、1byteずつデーターを読み込むと言う表現で説明する事とし、人間が読む事が出来ない数値を数値と略して表現する場合がある事とし、100byteのString型の変数を作成して、作成した100byteのString型の変数をテスト文字列変数と呼ぶ事とし、分類対象データーの各々のデーターから複数個のハッシュ値を算出して、算出したハッシュ値を使用して分類対象データーの各々のデーターを分類して記録したデーターベースから検索したい任意の文字列が入力されたテキストボックスのデーターをテスト文字列変数に代入し、テスト文字列変数に代入力された文字列を全て1byteずつテキスト形式でファイルに記録して保存し、保存したファイルをテスト文字列ファイルと呼ぶ事とし、テスト文字列ファイルをバイナリー形式で開いて1byteずつ最後まで読み込めるサイズで配列を作成し、作成した配列を数値テスト文字列配列と呼ぶ事とし、テスト文字列ファイルをバイナリー形式で開いて、数値テスト文字列配列の最初の位置から最後の位置までに、1byteずつ全て代入する事とし、4byteのstring型の変数を作成し、この作成した4byteのstring型の変数を検索結果変数と呼ぶ事とし、２個のサイズで8bitの配列を作成し、作成した配列をハッシ���２配列と呼ぶ事とし、8byteのstring型の変数を２個作成し、作成した２個の変数を各々、第１ハッシュ２進２変数、第２ハッシュ２進２変数と呼ぶ事とし、数値テスト文字列配列の最初の位置に代入されているデーターを取得して、取得したデーターを２進数に変換して、変換した２進数が８桁に満たない場合は、変換した２進数の先頭の位置に相当する左側に８桁に満たない分だけ0を連結して８桁に調整して、８桁に調整した２進数を第１ハッシュ２進２変数に代入し、第１ハッシュ２進２変数に代入された２進数の全ての桁の0と1を加算して求められた数値を2で除算した剰余数を求めて、ハッシュ２配列の最初の位置に代入し、第１ハッシュ２進２変数に代入された２進数の先頭から７桁分の２進数を抽出して第２ハッシュ２進２変数に代入し、第２ハッシュ２進２変数に代入された２進数を１０進数に変換して、１０進数に変換した数値を2で除算した剰余数を求めてハッシュ２配列の最後の位置に代入する事とし、以下に分岐処理を行う事とし、この分岐処理を分類検索分岐処理と呼ぶ事とし、分類検索分岐処理で、ハッシュ２配列の最初の位置に代入されたデーターとハッシュ２配列の最後の位置に代入されたデーターが両方とも0の場合は、繰り返し処理を行う事とし、この繰り返し処理を分類１繰り返し処理と呼ぶ事とし、分類１繰り返し処理では、第１分類配列の最初から最後までのデーターとテスト文字列変数に代入された文字列と等しいかどうかを検査する繰り返し処理を行う事とし、以下に分岐する事とし、この分岐を文字列代入１分岐処理と呼ぶ事とし、文字列代入１分岐処理で、テスト文字列変数に代入された文字列と第１分類配列に代入されたデーターを検査して等しい文字列である場合は、第１分類配列のデーターを検索結果変数に代入して、文字列代入１分岐処理を終って、分類１繰り返し処理を終了する事とし、文字列代入１分岐処理で、テスト文字列変数に代入された文字列を第１分類配列に代入されたデーターを検査して等しい文字列で無い場合は、何も処理をしない事とし、文字列代入１分岐処理を終了する事とし、分類１繰り返し処理の先頭に戻って、第１分類配列の次のデーターの検査を行う事とし、第１分類配列の最初から最後までのデーターを検査し終わったら、分類１繰り返し処理を終わる事とし、分類検索分岐処理で、ハッシュ２配列の最初の位置に代入されたデーターが1で、ハッシュ２配列の最後の位置に代入されたデーターが0の場合は、繰り返し処理を行う事とし、この繰り返し処理を分類２繰り返し処理と呼ぶ事とし、分類２繰り返し処理では、第２分類配列の最初から最後までのデーターとテスト文字列変数に代入された文字列と等しいかどうかを検査する繰り返し処理を行う事とし、以下に分岐する事とし、この分岐を文字列代入２分岐処理と呼ぶ事とし、文字列代入２分岐処理で、テスト文字列変数に代入された文字列と第２分類配列に代入されたデーターを検査して等しい文字列である場合は、第２分類配列のデーターを検索結果変数に代入して、文字列代入２分岐処理を終って、分類２繰り返し処理を終了する事とし、文字列代入２分岐処理で、テスト文字列変数に代入された文字列を第２分類配列に代入されたデーターを検査して等しい文字列で無い場合は、何も処理をしない事とし、文字列代入２分岐処理を終了する事とし、分類２繰り返し処理の先頭に戻って、第２分類配列の次のデーターの検査を行う事とし、第２分類配列の最初から最後までのデーターを検査し終わったら、分類２繰り返し処理を終わる事とし、分類検索分岐処理で、ハッシュ２配列の最初の位置に代入されたデーターが0で、ハッシュ２配列の最後の位置に代入されたデーターが1の場合は、繰り返し処理を行う事とし、この繰り返し処理を分類３繰り返し処理と呼ぶ事とし、分類３繰り返し処理では、第３分類配列の最初から最後までのデーターとテスト文字列変数に代入された文字列と等しいかどうかを検査する繰り返し処理を行う事とし、以下に分岐する事とし、この分岐を文字列代入３分岐処理と呼ぶ事とし、文字列代入３分岐処理で、テスト文字列変数に代入された文字列と第３分類配列に代入されたデーターを検査して等しい文字列である場合は、第３分類配列のデーターを検索結果変数に代入して、文字列代入３分岐処理を終って、分類３繰り返し処理を終了する事とし、文字列代入３分岐処理で、テスト文字列変数に代入された文字列を第３分類配列に代入されたデーターを検査して等しい文字列で無い場合は、何も処理をしない事とし、文字列代入３分岐処理を終了する事とし、分類３繰り返し処理の先頭に戻って、第３分類配列の次のデーターの検査を行う事とし、第３分類配列の最初から最後までのデーターを検査し終わったら、分類３繰り返し処理を終わる事とし、分類検索分岐処理で、ハッシュ２配列の最初の位置に代入されたデーターとハッシュ２配列の最後の位置に代入されたデーターが両方とも1の場合は、繰り返し処理を行う事とし、この繰り返し処理を分類４繰り返し処理と呼ぶ事とし、以下に分岐する事とし、この分岐を文字列代入４分岐処理と呼ぶ事とし、文字列代入４分岐処理で、テスト文字列変数に代入された文字列と第４分類配列に代入されたデーターを検査して等しい文字列である場合は、第４分類配列のデーターを検索結果変数に代入して、文字列代入４分岐処理を終わって、分類４繰り返し処理を終了する事とし、文字列代入４分岐処理で、テスト文字列変数に代入された文字列を第４分類配列に代入されたデーターを検査して等しい文字列で無い場合は、何も処理をしない事とし、文字列代入４分岐処理を終わる事とし、分類４繰り返し処理の先頭に戻って、第４分類配列の次のデーターの検査を行う事とし、第４分類配列の最初から最後までのデーターを検査し終わったら、分類４繰り返し処理を終わり、分類検索分岐処理を終わると言う処理を行う事で、分類対象データーを分類する為に複数個のハッシュ値を算出して、算出した複数個のハッシュ値を使用して各々の分類対象データーを分類して記録してあるデーターベースから、検索したい任意の文字列を検索するソフトウェアを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピューターで使用する文字列等のデーターを高速に検索する為にデーターを分類する技術と検索する技術に関する
【背景技術】
【０００２】
圧縮技術に関する文献としては、〔非特許文献１〕と〔非特許文献２〕がある。
【非特許文献１】奥村晴彦・山崎敏 著 LHAとZIP 圧縮アルゴリズム×プログラミング入門 ソフトバンク パブリッシング株式会社 2003/12/6 初版
【非特許文献２】R.セジウィック 著 野本 浩平/星 守/佐藤 創/田口 東 共訳 アルゴリズムC・新版 近代科学社 2004/5/31初版発行
【０００３】
〔非特許文献１〕は、ZIP形式の圧縮技術とLZH形式の圧縮技術を説明した文献である。それとともに、今日までに開発された圧縮技術を紹介している文献である。
以下に、「求める」と、「生成」と、「算出」と、「処理」は、同じ意味として使用する。
また、本発明の符号符号分類検索ソフトウェアを記録した記録媒体の事を符号符号分類検索ソフトウェアと略して呼んだりする事がある。
また、関数とは、ある処理を行う処理工程の事を言い、ソフトウェアと同じ意味で使用する。
また、ハッシュ関数とは、任意のデーターを代表する数値を生成する為の処理工程の事を言う事とする。分類しようとするデーターのハッシュ値を算出して、ハッシュ値を使用して分類するのに使用したり、ハッシュ値を使用して分類したデーターが、何処の分類に属しているかを検索したり、ハッシュ値を使用して暗号化に使用したり、ハッシュ値を使用して一個のデーターを検索する処理を行うのに使用していたりするのがハッシュ関数である。
また、このハッシュ関数から算出された数値の事をハッシュ値と呼んだり、ハッシュコードと呼んだり、符号と呼んだりする。
また、分類しようとするデーターの事を分類対象データーと呼んだりする。また、代表値を算出する任意のデーターを対象データーと呼んだりする。
また、分類しようとする文字列の事を分類対象文字列と呼んだりする。また、検索したい文字列の事を検索したいデーターと呼んだりする。また、データーベースに記録されている文字列やデーターの事を検索対象文字列と呼んだり、検索対象データーと呼んだりする。
ハッシュ関数の事を簡単に言い換えると、ハッシュ関数とは、ハッシュコードを生成するソフトウェアの事であると言える。
本発明の符号符号分類検索ソフトウェアを記録した記録媒体の事を符号符号分類検索ソフトウェアと略して呼ぶ事がある。
この〔非特許文献１〕の文献では、113ページから114ページに、データーを基にハッシュ関数を使用してハッシュ値を生成して、生成したハッシュ値でデーターを分類して保存する事で検索処理を高速化する方法を簡単に説明している。
【０００４】
〔非特許文献１〕は、242ページから246ページに、ハッシュ関数を使用して生成したハッシュ値とは違う処理として特殊な処理が記述されている。記述されている特殊な処理の内容を「」内に記述する。「最初のValの計算はハッシュ関数の代わりでもあるのですが、ハッシュ関数とは違い最初の２文字を混ぜません。ですので、文字'AB'で始まるリンクリストには、'AB'で始まる文字列しか登録されないようになっています。この文字数を増やせばサーチ処理は早くなるのですが、その分テーブルの初期化処理や辞書のスライド処理に時間がかかるようになります。このあたりのバランスは実際に動かして時間を測ることで決定しました。」と記述している。最初の二文字を混ぜずに、そのままの状態の二文字で分類する方法を書いているように読み取れる。しかし、隠していて何を記述しているのかが良く理解できない説明である。「Val」についても何も記述されていないのでどんな計算式なのかが全く解らない説明である。
【０００５】
〔非特許文献１〕の242ページから246ページに記述されている「ハッシュ関数とは違い最初の２文字を混ぜません。」と言う意味は、分類対象文字列の先頭二文字分が一致するデーターを分類したと言うものだと考えられる。分類対象文字列の先頭二文字として文字'AB'で始まる文字列の'AB'と言う二文字分は、ASCII文字コードだと2byteとなる。ハッシュ関数は、全ての文字列を混ぜて代表値を算出するものだと言う表現で説明しているものだと考えられる。「混ぜる」と言うあいまいな表現で説明している事について鑑みるに、殆どの部分で、この様な表現でこの書籍では説明していると考えられるので、以下に、文章の表現を解釈すると、ハッシュ関数とは違う数値による分類方法として記述しているものであるから、分類対象文字列の先頭から、二文字分が一致するデーターを分類するという分類方法であると解釈できる説明文であると思う。
〔非特許文献１〕の242ページから246ページのハッシュ関数を使用して生成したハッシュコードとは違う処理として特殊な処理が記述されているが、分類対象文字列の先頭から二文字分が一致するデーターを分類すると言う方法の様であるが、全く、符号を生成しないで分類する方法だと考えられる。また、分類対象文字列の先頭から二文字分が一致するデーターを分類すると言う方法の場合は、2byte分の文字コードが一致するデーターを分類する方法と言い換える事が出来ると思われる。
【０００６】
〔非特許文献１〕には、分類するデーターを基にハッシュ関数を使用してハッシュ値を算出して、算出したハッシュ値でデーターを分類する方法と、文字または、文字コードで分類すると言う特殊な方法について記述しているが、ハッシュ関数の処理工程を変える事で違う値のハッシュ値を複数個算出して、算出した複数個のハッシュ値を分類用のハッシュ値として使用して分類対象文字列を分類すると言う、本発明の符号符号分類検索ソフトウェアを記録した記録媒体の技術と処理が類似する処理は記述されていない。
【０００７】
〔非特許文献２〕の533ページから535ページに、２重ハッシュ法と言う技術が記載されている。二個のハッシュ値を算出して、算出した二個のハッシュ値で探索と言う処理を行う技術である。この技術は、探索に使用する記述である。ばらばらな文字の集合から、同じ文字を集めると言う処理を行う為の処理に使われるものである。本発明は、複数個のハッシュ値を求めて、求めた複数個のハッシュ値で分類する為の技術である。本発明とは、使用目的が全く違う事から、本発明とは、全く別の技術であると考えられる。また、２重ハッシュ法では、二個目のハッシュ値が、絶対に「0」と言う数値であってはならないと言う条件がある。本発明では、複数個のハッシュ値の全てに、算出されるハッシュ値が、「0」であってはならないと言う様な数値の規制は無い。使用目的が全く違事から起きている大きな違いである。二個目のハッシュ値が「0」であってはならないと言う条件の有る無しからも、本発明の符号符号分類検索ソフトウェアを記録した記録媒体とは、違うものであると言えると考えている。
【０００８】
〔非特許文献２〕の517ページから518ページには、任意のキーに対して、指定の数で割って得られる余りをハッシュ値とする除算剰余ハッシュ関数と呼ばれるハッシュ関数の説明を記述している。任意のキーとは、分類対象データーの事である。指定の数とは、任意の数値である。指定の数で割って得られる余りを求める計算を剰余と呼び、余りを剰余数と呼ぶ。
〔非特許文献２〕の518ページの「図１４．２ 整数キーに対する除算剰余ハッシュ関数」の説明文の部分に中央の関数(V%100)は、キーの右の２桁だけを使っているので、ランダムでないキーに対しては、性能が悪くなりやすい。と記述して、除算剰余ハッシュ関数の途中の計算の一例として説明している。例として２０個程の除算剰余ハッシュ関数の途中の計算によるハッシュ値を記述しているので、最初の行に記述されているハッシュ値の説明を行う。
中央の関数(V%100)の例として記述されている、最初の行に記述されているキーは、１３８３６と言う数値である。１３８３６と言う数値のハッシュ値を求める説明をする。このキーの１３８３６から、右の２桁の３６を抽出してハッシュ値とする事も出来るが、ランダム性に乏しく数値に偏りが生じやすいので、抽出した３６と言う数値を任意の数値で除算し、剰余数を求めて、求めた剰余数をハッシュ値として算出するのが、普通行われているハッシュ関数である。
【０００９】
本発明の符号符号分類検索ソフトウェアを記録した記録媒体の技術を、１３８３６と言う数値のハッシュ値を求める事で説明する。まず、左の３桁の１３８を抽出して抽出した１３８と言う数値を任意の数値で除算し、剰余数を求めて、得られた剰余数を第１ハッシュ値として算出する。次に、左の２桁の１３と言う数値を任意の数値で除算し、剰余数を求めて、得られた剰余数を第２ハッシュ値として算出する。第１ハッシュ値と第２ハッシュ値の組み合わせで分類対象データーの１３８３６を分類すると言う発明である。第１ハッシュ値と第２ハッシュ値の組み合わせではなくて、第１ハッシュ値で１３８３６を分類して、更に、第２ハッシュ値で１３８３６を分類しても、本発明の簡単なレパートリーなので、本発明である事を明記する。
【００１０】
実施例では、分類対象文字列を２進数に変換して任意の位置から任意の桁数分抽出して、抽出した２進数の全ての桁の数値を加算した数値を求めて、任意の数値で除算して剰余数を求めて、第１ハッシュ値とし、第１ハッシュ値を算出した場合と同じ位置の任意の位置から第１ハッシュ値を算出した場合と違う任意の桁数分抽出して、抽出した数値を１０進数に変換して、任意の数値で除算して剰余数を求めて、第２ハッシュ値として使用して、分類対象文字列を分類すると言う処理を行っている。
【００１１】
実施例では、データーベースに検索文字列と同じ検索対象文字列が有るかどうかを検索する場合は、検索文字列を２進数に変換して任意の位置から任意の桁数分抽出して、抽出した２進数の全ての桁を加算した数値を求めて、任意の数値で除算して剰余数を求めて、第１ハッシュ値とし、第１ハッシュ値を算出した場合と同じ位置の任意の位置から第１ハッシュ値を算出した場合と違う任意の桁数分抽出して、抽出した数値を１０進数に変換して、任意の数値で除算して剰余数を求めて、第２ハッシュ値として使用して、データーベースに分類されたデーターを探し出すと言う処理を行っている。
【００１２】
本発明は、全て除算剰余ハッシュ関数を使用して実施ている。しかし、ハッシュ関数には、多種多様な関数が存在する。メンセンヌ数と呼ばれる数値を使用したハッシュ関数や、ホーナー法と呼ばれるハッシュ関数や、普遍ハッシュ法と呼ばれるハッシュ関数などである。まだ、他にも列挙しなかった多種多様なハッシュ関数がある。小数点以下の値を使用したハッシュ関数もある。〔非特許文献２〕の515ページから546ページまでに、多種多様なハッシュ関数が記述されている。本発明の符号符号分類検索ソフトウェアを記録した記録媒体をどの様なハッシュ関数を使用したとしても、対象データーから複数個のハッシュ値を算出して、対象データーを分類したり、分類した対象データーを検索する為に複数個のハッシュ値を使用している場合は、本発明の符号符号分類検索ソフトウェアを記録した記録媒体である事を明言する。
【００１３】
本発明は、符号符号分類検索ソフトウェアを記録した記録媒体と言う題名であるが、記録媒体とは、コンピューターに実行させる本発明の符号符号分類検索ソフトウェアを記録した記録媒体をコンピューターが読み取る事が可能な記録媒体の事である。また、本発明の符号符号分類検索ソフトウェアを記録した記録媒体の事を符号符号分類検索ソフトウェアと略して記述する事がある。
【００１４】
コンピューターで普通に使われているテキスト文字（日本国では、文字コード二文字以上で一文字を表す文字と文字コード一文字で表す半角英数字の文字の事）を、テキスト文字または、文字と略して記述する事とする。また、テキスト文字とリンクされている数値を文字コードと言う事がある。文字コードは、人間が読む事が出来ない機械語で、0〜255までの数値である。また、一般的に使用されているASCII文字と言う規格がある。ASCII文字は、文字コード一文字で表す半角英数字の文字の事である。ASCII文字は、ASCIIコードと呼ばれる文字コードとリンクされている。ASCIIコードの文字コードは、0〜255までの数値である。日本国で一般的に使用されているテキスト文字の文字コード一文字で表す半角英数字の文字と文字コードは、ASCII文字であり、その文字コードは、ASCIIコードである。
【００１５】
1byteとは、一文字分のbit数の事を言う。また、現在の一文字分のbit数は、8bitである。bitとは、２進数で数値を表した時の２進数の桁数の事である。また、コンピューターで普通に使われている機械語を機械語と略して記述する事とする。コンピューターで普通に使われている機械語とは、コンピューターに搭載されているCPUと呼ばれる中央演算処理装置が処理を予定している命令文の事を言う。文字コードは、人間が読む事が出来ない0〜255までの数値で機械語である。
【００１６】
コンピューターで普通に使われているテキスト文字にリンクしている文字コードの規格は、多種多様である。7bitを1byteとして文字コードを規定している規格もある。文字コードの前にどんな文字コードなのかを識別させる為に1byteから数byteの識別記号を挿入する文字コードの規格もある。
【００１７】
コンパイラとは、ソフトウェアを制作する為に作られたソフトウエアの事を言う事とする。人間が書いたプログラムをコンピューターが読み込んで実行する事が出来る機械語に変換処理する事でソフトウェアを制作するソフトウェアの事をコンパイラと言う事とする。
【００１８】
実施例では、文字列操作関数と言う関数を使用して処理している。文字列操作関数とは、文字列の状態で処理する関数の事を言う。文字列操作関数は、プログラムを作成する為のソフトウェアのコンパイラに標準的に添付されている関数である。コンパイラに標準的に添付された関数であるから、常識的な処理である。常識的な処理に関しては、詳しい処理工程を記述しない。
文字列操作関数は、例えば、「ああ言えば、@こう言う」と言う文字列全体を検査して「@」が含まれているかどうかを検査するとか、「@」の位置は、先頭から何文字目なのかを検査するとか、「@」で文字列を分割して「ああ言えば、」と、「こう言う」の二つに分割するなどの処理が出来る様になっている関数の事を文字列操作関数と言う。文字列操作関数には、先頭から何文字取得すると言う処理や、文字列全体が何文字かを検査する処理など、多種多様な処理が出来る様になっている。
【００１９】
変数の型とは、変数を作成する場合に指定するものであり、作成する変数のデーターを代入する事ができる領域の全てに適用されるものである。前述の「領域の全てに適用されるものである」と言う意味は、変数のデーターを代入する事ができる領域に型の違うデーターを混在させる事が出来ないと言う意味である。人間が読む事が出来る文字列を代入する事ができる変数の型としてString型と言う型がある。人間が読む事が出来ない数値を代入する事が出来る型もある。
String型の変数ではない、人間が読む事が出来ない数値を代入する事が出来る変数を作成する場合は、「何bitの変数を作成する」または、「何byteの変数を作成する」と言う表現で変数を作成する事とする。8bitの変数を作成すると言う表現で説明している場合の意味は、8bitの人間が読む事が出来ない数値のデーターを代入する事ができる変数を作成すると言う事である。
以下に、「人間が読む事が出来ない数値」を「数値」と略して表現する場合がある。また、「人間が読む事が出来る数値」を「数値」と略して表現する事がある。どちらの場合でも「数値」と言う表現で表現しているので、表現があいまいであるが、プログラムでは、変換するだけの問題なので大きな問題ではない。
【００２０】
変数を作成する場合、String型の場合は、「何bitのString型で変数を作成する」または、「何byteのString型で変数を作成する」と言う表現でString型の変数を作成する説明を行う事にする。
String型とは、文字列を代入する事ができる変数の型を意味するものである。言い換えるとString型とは、文字列型と言う言い方が出来るものである。String型で変数を作成して、作成したString型の変数に文字列や文字を代入すると自動的に文字コードと言う数値から、人間が読む事ができる文字に変換されて変数に代入されるものである。
【００２１】
String型と同じものとしてテキスト形式と言う形式もある。テキスト形式とは、ファイルを開いたり保存したりする形式である。
テキスト形式も、String型と同じで、テキスト形式と指定すると、文字列や文字を自動的に文字コードと言う数値から、人間が読む事ができる文字に変換される形式である。テキスト形式を指定する場合は、「テキスト形式で」と言う文言を使用して、「指定して」を略して表現したりする。従って、「テキスト形式で1byteずつデーターをファイルに記録して保存する」または、「テキスト形式でファイルを開いて1byteずつデーターを読み込む」という表現で説明する事とする。
【００２２】
バイナリー形式と言う形式もある。バイナリー形式とは、ファイルを開いたり保存したりする形式である。
バイナリー形式を指定すると、人間が読む事ができる文字から、自動的に文字コードと言う数値に変換される形式である。バイナリー形式を指定する場合は、「バイナリー形式で」と言う文言を使用して、「指定して」を略して表現したりする。従って、「バイナリー形式で、1byteずつデーターをファイルに保存する」または、「バイナリー形式でファイルを開いて、1byteずつデーターを読み込む」という表現で説明する事とする。
バイナリー形式の文字コードの状態の数値は、機械語である。この機械語をString型に代入すると人間が読める数値に変換される。例えば、アルファベットの「A」を例に説明する。アルファベットの「A」は、ASCIIコードの文字コードだと「41」である。アルファベットの「A」が記録されているファイルを「バイナリー形式でファイルを開いて、1byteずつデーターを読み込む」と、読み込まれたデーターは、「41」になる。読み込まれた「41」をString型に変換してString型の変数等に代入すると、「4」と「1」となる。「4」「1」は、説明の都合上「」で囲む事で一文字である事を表しているだけである。つまり、2byteの人間が読める数値として変数に代入されるものなである。
【００２３】
テキスト形式でファイルに記録して保存する場合は、人間が読める文字として保存される為に、1byteから数byteずつとなる。テキスト形式の場合は、文字コードで一文字分ずつと言う指定となる為に、2byteで有ったり、3byteで有ったり、4byteである場合もある為である。これは、実施例で使用しているコンピューターが使用している文字コードが半角英数字の場合は、1byteずつの規格で作られており、漢字や平仮名などを表す際の規格は、2byte分、3byte分、4byte分の数値で、漢字や平仮名や全角カタカナを一文字として表示するように規格されている為に、データー量をはっきりと記述できないのである。実施例で使用したコンパイラの場合は、自動的に最初の1byte目の文字コードで一文字分の文字コードが何byteなのかをコンピューターに判断させて一文字分の文字コード分に相当する1byteから数byteずつを保存する事になっている。予め、何と言う文字を扱うのかが解らない為、サイズを一定にして記述できないものなのである。しかし、実施例の説明では、1byteずつ保存するという表現で説明する事にする。
例えば、アルファベットの「A」を例に説明する。アルファベットの「A」は、ASCIIコードの文字コードだと「41」である。テスト変数と言う名称の変数に機械語の文字コードで1byteの「41」が代入されていると仮定する。テキスト形式でテスト変数のデーターをファイルに記録して保存すると、ファイルには、アルファベットの「A」として記録される。アルファベットの「A」がテキスト形式で記録されていファイルをテキスト形式でファイルを開くとアルファベットの「A」として読込まれる。アルファベットの「A」がテキスト形式で記録されていファイルをバイナリー形式でファイルを開くと「41」と読み込まれる。
【００２４】
配列とは、データーを１個から複数のデーターを代入する事が出来るものを言い、配列のサイズとは、配列に代入する事が出来るデーターの数の事を言う。配列のサイズの事を配列サイズと言ったりする事がある。配列にデーターを代入する事が出来る部分を配列要素または、配列の要素と呼び、配列要素または、配列の要素の合計数を配列要素数または、配列の要素数と呼ぶ事とする。配列要素数または、配列の要素数は、配列のサイズと同じ意味のものである。
【００２５】
配列の型には、主に数値型とString型の二種類がある。数値型の場合は、代入できるデーターは、人間が読む事が出来ない数値のみである。String型の場合は、人間が読む事が出来る文字列の状態のデーターのみ代入できるものである。数値型とString型という二種類の型の特徴は、配列だけではなく、変数の場合と同じである。
【００２６】
数値型とString型という二種類の型は、配列を作成する場合に指定するものであり、作成する配列のデーターを代入する事ができる領域の全てに適用されるものである。前述の「領域の全てに適用されるものである」という意味は、型の違うデーターを、配列のデーターを代入する事ができる領域に混在させることが出来ないという事である。実施例では、数値型の場合は、数値型の配列を作成すると断り書きをしない場合もある。数値型の配列を作成する場合に、「幾つのサイズで何bitの数値型で配列を作成する」という表現ではなく、数値を略して「幾つのサイズで何bitの型で配列を作成する」という表現をしたりする事とする。これを10の配列サイズで8bitの型で配列を作成するという表現で説明している場合で意味を説明する。この場合は、配列の要素１個に8bitのデーターを１個代入できる様なものとして、配列要素数10個で配列を作成するという意味である。
【００２７】
String型で配列を作成する場合は、以下の様に表現する。「幾つのサイズで何bitのString型の配列を作成する」という表現をする事とする。例えば、10個のサイズで16bitのString型で配列を作成すると記述した場合で説明する。配列の１個のデーターを代入する事が出来る領域の１個のデーターが使用するメモリー量が2byteであるとし、10個のデーターを代入する事が出来る配列を作成するという事である。この10個のサイズで16bitのString型で配列を作成する場合のメモリーの総使用量は、16bit×10という計算が可能となり、答えは、160bit(または、20byte)となる。
【００２８】
配列のインデックスとは、配列の添字または、配列番号などとも呼ばれる事があるものである。
以降、配列のインデックスを配列の添字または、配列番号と呼ぶ事がある。
配列のデーターを代入できる領域の各々のデーターを指定する為に通常、0番からデーターを代入できる最後の位置までに、コンパイラによって、連番が自動的に付けられる。この配列のデーターを代入できる領域の最初から最後までに付けられた連番をインデックスと言う。
言い換えると配列のインデックスとは、配列に代入されるデーターの位置を示す番号の事を言うという事になる。
【００２９】
配列のインデックスを取得する場合の説明を行う。
1byteの変数を作成してこの作成した変数を仮変数と呼ぶ事として、仮変数に0を代入して初期化する。配列に代入されたデーターが全て1byteであると仮定して配列のインデックスを取得する処理工程の説明を行う事とする。配列の最初の位置に代入されているデーターから最後の位置までに代入されたデーターを1byteずつ読み込む度に仮変数に代入された数値に1を加算する事で回数をカウントするという処理を行うと、仮変数に代入された数値と配列のインデックスとが対応した数値になるので仮変数に代入された数値が配列のインデックスとなるので、仮変数に代入された数値を取得するのが配列のインデックスの取得方法である。
配列のインデックスの取得方法の説明を終わる。
また、配列のデーターを代入する事ができる領域の最初の位置という表現を配列の最初の位置という様に略した表現を行う場合がある。また、配列のデーターを代入する事ができる領域の最後の位置という表現を配列の最後の位置という様に略した表現を行う場合がある。
【００３０】
配列のインデックスを取得する方法について例を示して説明する。配列のサイズが10の配列の場合で説明する事とする。配列のサイズが10の配列を作成するとインデックスは、0から9までの数値がコンパイラと呼ばれるプログラムを書く為に一般的に使われるソフトウェアによって自動的に付けられる。最初のインデックスは、必ず0から始まるものであり、配列の最後の位置まで番号が連番で付けられる。配列のサイズが10の配列の場合は、「0,1,2,3,4,5,6,7,8,9」という連番が配列のインデックスとなる。
配列のサイズが10の配列の場合の様に、配列の最初の位置から最後の位置までに付けられた数値が配列のインデックスとなるのである。そのインデックスを配列のデーターから取得する方法は無い。インデックスを使用して配列からデーターを取得するには、最初の位置を0番として、0番から配列の最後の位置までの連番を作成して、その連番の中から１個ずつ順番に数値を取得する事でインデックスを取得して、取得したインデックスを使用して配列からデーターを取得するのである。配列の位置を指定する時に配列のインデックスを指定する事はできるが、その反対に配列に代入されたデーターからインデックスを取得する事は出来ない。配列に代入されたデーターの位置を0から１ずつ数値を積算する事で得た数値を、配列のデーターと同じ位置に有ったインデックスとして使用すると言う技術が、配列に代入されたデーターからインデックスを取得する方法である。
これで、配列のインデックスを取得する方法について例を示して説明する説明を終わる。
【００３１】
以下に、配列の末尾にデーターを代入すると記述している場合がある。
未だに配列に代入されたデーターが無い場合は、普通、配列の最初の位置にデーターを代入するものである。しかし、配列の最初の位置から代入する度に数byteずつ代入する位置をずらして、データーを数byteずつ代入する場合、配列の最初の位置にデーターを代入した後は、配列に代入されたデーターの最後の位置にあるデーターの次の位置に代入するという事になる。この場合、配列の最初の位置に既にデーターを代入した後の位置の指定を末尾と表現する事が出来る。未だに配列に代入されたデーターが無い状態で、配列の最初の位置から代入する度に数byteずつ代入する位置をずらして数byteずつデーターを配列に代入する場合、配列の最初の位置にデーターを代入する場合でも、配列の末尾にデーターを代入すると表現する事が出来ると考えられる。そこで、配列の最初の位置から代入する度に数byteずつ代入する位置をずらして、数byteずつデーターを配列に代入する場合は、配列の最初の位置に代入する場合であっても、配列の末尾に代入すると記述する場合がある。
また、本発明の明細書で、配列の最初の位置から代入する度に数byteずつ代入する位置をずらして、数byteずつデーターを配列に代入する場合に於いて、配列に代入するデーターの順番について断り書きが無い場合は、取得した元のデーター（作成したデーターや取得したデーターや読み込んだデーターや元の配列に代入されていたデーターなど）の順番通りに数byteずつ配列に代入するものとする。
【００３２】
テキスト形式とバイナリー形式は、ファイルを扱う場合のみ使用できる形式である。
実施例で使用しているコンパイラを使用した場合は、String型で変数を作成すると約２０億個の文字コードで出来た文字を代入出来るサイズで変数が作成される。つまり、約２０億byteの変数が作成される。作成された変数は代入される文字列の文字数によって、自動的にメモリーの使用量が変更されるようになっている。
【００３３】
この様にString型で変数を作成するとメモリーの使用領域が自動的に代入されるデーターの量によって変化するものになっている。使用するコンパイラによっては、この様な自動的に代入される文字列の文字数によって変数のサイズを変更する機能が無い場合がある。そこで、本発明の明細書では、String型で変数を作成する場合、型として使用するメモリー使用量を指定する事とする。実施例で使用しているコンパイラを使用した場合、実際には、型として使用するメモリー使用量を指定して変数を作成する事はできない。
【００３４】
プログラマーとは、ソフトウェアを作成する人間の事を言う事とする。但し、人工知能を使用してソフトウェアを自動的に作成する場合は、人工知能もプログラマーであるとする。
人工知能とは、思考処理を行うソフトウェアの事である。思考処理とは、人間の様に物事を考えて処理するソフトウェアの処理工程を言う事とする。
【発明の開示】
【発明が解決しようとする課題】
【００３５】
文字列検索処理を高速化する為に、分類対象データーの文字列を分類する際にハッシュコードと呼ばれるハッシュ関数を使用して算出された数値を使用するのが普通である。普通に使われているハッシュ関数は、段落〔０００８〕の除算剰余ハッシュ関数である。除算剰余ハッシュ関数の場合は、剰余数を使うので、比較的小さな数値を使用する事になる。ハッシュ値を算出する分類対象データーから、ハッシュ値を算出した場合、分類対象データーの数値の大きさによっては、ハッシュ値があまりに小さな数値になりすぎてしまう場合がある。10で除算すれば、0から9までがハッシュ値として算出されるし、50で除算すれば、0から49までがハッシュ値として算出されるのであるが、対象データーが小さな数値だと、除算出来ないと言う問題が発生する。対象データーが小さな数値だと、適度の大きさの数値で除算出来ないので大量のデーターを分類すると分類数が少なくなり、その為に、分類されたデーター数が多くなってしまい検索に時間がかかりすぎてしまうと言う問題が発生する場合がある。除算した場合に、小数点以下の数値を利用する事で、除算出来ない場合の問題を回避する技術もあるが、処理時間が余計にかかってしまうと言う問題点がある。また、分類対象データーを数値化して、任意の数値で除算して求めた数値の小数点以下を抽出してハッシュ値として使用する事も考えられる。小数点第一位までだと、0から9である。小数点第二位までだと0から99である。小数点第三位までだと0から999である。小数点第二位までならば使えるが、小数点第三位までだと、もはや多すぎて使えない。0から200までとか、0から300までとか、0から400までとか0から500までとか、もう少し、少なめに分類したいのである。除算剰余ハッシュ関数や任意の数値で除算して求めた数値の小数点以下を抽出してハッシュ値とする技術だと、分類数が自由にならないと言う問題がある。除算して求めた数値の小数点以下の数値を使用する技術もハッシュ関数の一種である。除算して求めた数値の小数点以下の数値を使用する技術が、ハッシュ関数である事は、〔非特許文献２〕の516ページから518ページに記述されている。ハッシュ関数である事は、〔非特許文献２〕の516ページから518ページに記述されている内容のハッシュ関数を最も、単純化したものが、小数点以下の数値を使用する技術である。
【００３６】
また、〔非特許文献１〕のハッシュ値とは違う処理として特殊な処理が記述されているが、この特殊な処理技術は、一文字で分類する場合も含まれると考えられる。〔非特許文献１〕の特殊な処理で分類対象文字列の先頭から一文字分が一致するデーターで分類する場合は、8bitの文字コードの一文字分で分類するので0から255までの分類となる。0から255までの分類を行う場合、本発明でも8bitの２進数を抽出して１０進数に変換した場合に算出されるハッシュ値の最大数は、255になるので、最大分類数は、0を含むので256となり、同じ最大分類数となる。しかし、処理工程が、全く違うので全く違う技術である。また、分類対象文字一文字で分類する場合であるならば、ASCIIコードの文字に割り当てられた文字コードの部分だけの数が最大分類数となる。
〔非特許文献１〕の特殊な処理の分類対象文字列の先頭から二文字分が一致するデーターで分類する技術を使用した場合は、分類数が幾つになるかが解らない。ソフトウェアを作成する際、かなりの問題が発生すると考えられる。
【００３７】
〔非特許文献１〕の特殊な処理の分類対象文字列の先頭から二文字分が一致するデーターで分類する技術で、二文字分の桁数の２進数を最大値の分類数だと仮定して考えると、二文字分は、2byteとなる。2byteで表現できる２進数の最大値は、「1111111111111111」で、１０進数だと65535である。つまり、0から65535までの分類数となり、合計分類数は、65536と言う異常に大きな分類数になってしまう問題がある。65536に分類すると、ソフトウェアの処理工程で、多分岐の量が多すぎて分岐処理する分岐を探し出すだけでも大きな時間を取られそうな分類数である。
また、分類数を増やそうとしてハッシュ関数で算出したハッシュ値を更に、ハッシュ関数を使用してハッシュ値を求めても全て同じハッシュ値しか求める事が出来ないので、分類数を増やす事が出来ないと言う問題がある。
【課題を解決するための手段】
【００３８】
本発明の符号符号分類検索ソフトウェアを記録した記録媒体は、分類対象文字列を基にハッシュ関数を使用してハッシュ値を複数個求めて、求めた複数個のハッシュ値を使用して分類対象文字列を分類して、データーベースに記録するソフトウェアであり、分類対象文字列を分類して記録したデーターベースから検索したい文字列が何処の分類に属しているかを検索して、属している分類に記録されているデーターの中から検索したい文字列を検索するソフトウェアの発明である。
ハッシュ関数の処理工程を複数個分だけ処理工程を変える事で、複数個のハッシュ値を算出して、算出した複数個のハッシュ値で分類対象文字列を分類してデーターベースに記録し、分類対象文字列を分類して記録したデーターベースから検索したい文字列が何処の分類に属しているかを検索して、検索したい文字列を検索する技術である。簡単に言い換えると、１個のデーターから複数個のハッシュ値を求めて、求めた複数個のハッシュ値で分類する技術の発明である。
本明細書では、ハッシュ関数の「処理工程を変える」を「処理工程を変化させる」と表現する事がある。
本発明の符号符号分類検索ソフトウェアを記録した記録媒体によって、分類対象データーのデーター量とか、住所などの他の情報を使用する事が出来ない場合でも、分類数を大きくする事が可能になり、高速な検索が出来る様になる。
【００３９】
ハッシュ関数の処理工程を変化させる技術としては、多種多様ある。多種多様なハッシュ関数の組合せで処理工程を変化させる事が出来るからである。多種多様なハッシュ関数の組合せでハッシュ値を複数個算出して、算出した複数個のハッシュ値を使用して対象データーを分類するのが本発明の符号符号分類検索ソフトウェアを記録した記録媒体である。また、多種多様なハッシュ関数の組合せでハッシュ値を複数個算出して、算出した複数個のハッシュ値を使用して対象データーを分類したデーターベースから、検索したいデーターが何処の分類に属するかを検索して、分類データーから検索したいデーターを検索する発明である。
正確には、最終的な処理として、複数のハッシュ値によって特定された分類に分類された複数個のデーターから一個のデーターを検索しているが、最終的に一個のデーターを検索する処理は、本発明には含まず、何処の分類に属しているかを検索する処理までが、本発明の符号符号分類検索ソフトウェアを記録した記録媒体である。
【００４０】
類似とも思わせられる２重ハッシュ法と言う処理技術がある。二個のハッシュ値を算出して使用するものがあるが、二個目のハッシュ値に「0」を使用してはならないと言う条件が有るのが、２重ハッシュ法である。本発明に於ける複数個のハッシュ値は、「0」で有っても構わないので、二重ハッシュ法とは全く違う技術である。２重ハッシュ法は、一個のデーターを探し出す検索技術である。本発明は、分類する技術であり、分類されたデーターが何処の分類に属するのかを検索する技術である。分類されたデーターの中から、一個のデーターを検索するのが２重ハッシュ法と言う処理技術である。似ているだけで、処理の目的が大きく違う技術である。
【００４１】
本発明の符号符号分類検索ソフトウェアを記録した記録媒体は、分類対象文字列を２進数の数値に変換して任意の位置から任意の桁数分抽出して、抽出した任意の桁数分の２進数を１０進数に変換して任意の数値で除算した剰余数を求めてハッシュ値とする技術を使用しているが、「任意の位置」とは、分類対象文字列を２進数の数値に変換した２進数の先頭の位置から何桁目の位置と言う意味であり、「任意の桁数分」とは、分類対象文字列を２進数の数値に変換した２進数の先頭の位置から何桁目から何桁目までの桁数の事である。
また、本発明の符号符号分類検索ソフトウェアを記録した記録媒体は、分類対象文字列を２進数の数値に変換して任意の位置から任意の桁数分抽出しているが、分類対象文字列を２進数の数値に変換せずに、１０進数の数値のまま、任意の位置から任意の位置までの任意の桁数を取得する場合の「任意の位置」とは、分類対象文字列の文字コードを人間が読める数値に変換して、人間が読める数値に変換した状態の１０進数の数値のまま、先頭の位置から何桁目の位置と言う意味であり、「任意の桁数分」とは、分類対象文字列の文字コードを人間が読める数値に変換して、人間が読める数値に変換した状態の１０進数の数値のまま、先頭からの位置から何桁目から何桁目までの桁数の事である。
【００４２】
また、本発明の符号符号分類検索ソフトウェアを記録した記録媒体は、分類対象文字列を任意の進数の数値に変換して任意の位置から任意の桁数分抽出して、抽出した任意の桁数分の任意の進数を１０進数に変換して任意の数値で除算した剰余数を求めてハッシュ値とする技術を使用しているが、「任意の位置」とは、分類対象文字列を任意の進数の数値に変換した任意の進数の先頭の位置から何桁目の位置と言う意味であり、「任意の桁数分」とは、分類対象文字列を任意の進数の数値に変換した任意の進数の先頭の位置から何桁目から何桁目までの桁数の事である。
「任意の進数」とは、３進数とか８進数とか１６進数とか２４進数とか任意の進数を作成したりして使用する事も考えられる為、１０進数とか１６進数とかに固定した書き方を避けた表現である。
【発明の効果】
【００４３】
コンピューターで使用されているファイルとは、ソフトウェアが記録されているファイルや、文字列が記録されている文書ファイルや、文字列と画像が記録されているドキュメントファイルや、既に圧縮されているファイルや、各種の形式で記録されたデーターファイル等の事を言う事とする。
【００４４】
コンピューターで使用されているファイルを圧縮する場合にハッシュ関数を使用して一個のハッシュ値を求めて、分類対象文字列を分類検索する事で圧縮処理を高速で処理すると言う処理工程が使用されているが、分類対象文字列が多くて処理工程に時間がかかりすぎていると言う問題がある。本発明の符号符号分類検索ソフトウェアを記録した記録媒体は、この問題を解決する。
コンピューターで使用されているファイルを圧縮する場合の処理工程で、本発明の符号符号分類検索ソフトウェアを記録した記録媒体を使用すると大幅に処理速度が改善される。圧縮処理が高速に処理される事によって、電力の消費量も少なく抑えられるようになると言うメリットも発生する。
また、音響ファイルや、画像ファイルや、動画ファイルは、既に圧縮された状態で提供されているのが普通であるが、本発明の符号符号分類検索ソフトウェアを記録した記録媒体は、未圧縮の音響ファイルや未圧縮の画像ファイルや未圧縮の動画ファイルの圧縮にも使用できる。
また、再圧縮が可能な圧縮技術そのものが無いと言われてはいるが、再圧縮が可能な圧縮技術を使用して既に圧縮された動画ファイルや、画像ファイルや、音響ファイルや、ソフトウェアや、文書ファイルや、ドキュメントファイルを圧縮する圧縮ソフトウェアに使用できると考えている。
【００４５】
データーベースと呼ばれる大量のデーターの中からデーターを検索する場合でも、一個のハッシュ値を算出して、算出したハッシュ値を使用してデーターを分類する事で高速検索処理を可能にしているが、本発明の符号符号分類検索ソフトウェアを記録した記録媒体は、データーベースに記録する分類対象データーの分類数を増やす事が可能になるので、従来よりも高速な検索が可能になる。この段落〔００４５〕に記述しているデーターベースと呼ばれる大量のデーターの中からデーターを検索する場合のデーターベースに記録しているデーターの種類とは、画像や音響や動画や文字列やプログラムやソフトウェアなど、種類を問わず全てのデーターを対象とするものである。
【００４６】
インターネットなどのネット上にあるWebサイトに書かれている大量の文字列や画像等のデーターを入手して、入手した大量のデーターを対象にWeb検索を行っている。この様なWebサイトに書かれている文字列や画像の検索を行う検索をインターネット検索と呼んでいる。インターネット検索で行っている検索にも一個のハッシュ値による分類処理が行われている。
本発明の符号符号分類検索ソフトウェアを記録した記録媒体をインターネット検索で使用する事で、従来よりも高速な検索処理が可能になると考えている。
【００４７】
また、認証や電子署名などでも、ハッシュ値が使用されている。本発明の符号符号分類検索ソフトウェアを記録した記録媒体は、認証や電子署名でも使用できると考えている。一個のデーターを高速に検索する技術としては、２重ハッシュ法が存在するが、本発明の符号符号分類検索ソフトウェアを記録した記録媒体は、一個のデーターが何処の分類に属するかを検索する事が可能なので、分類が一致した事を認証や電子署名の条件とする事で認証や電子署名に使用できる技術となると考えている。
認証または、電子署名とは、ソフトウェアの使用許諾の為のパスワードの様なものである。認証とは、許可が与えられた者の証である。電子署名とは、手書きの文字では無いが、電子的な記録によって、確実に本人である事を証明する為の署名の役割を果たすものの事を言う。
また、暗号処理に使用される事も有るであろうと考えている。認証や電子署名も基本的に暗号である。暗号処理の高速化にも使用できると考えている。
認証や電子署名や暗号やパスワードに、本発明の符号符号分類検索ソフトウェアを記録した記録媒体を使用する場合は、ハッシュ値を算出する為の任意のデーターを対象データーと呼ぶ事とする。ハッシュ値を算出する為の対象データーが一つしかなく、分類する処理を行う為にハッシュ値を算出するわけではないから対象データーと言い換える事とする。
【００４８】
認証や電子署名や暗号やパスワードに、本発明の符号符号分類検索ソフトウェアを記録した記録媒体を使用する場合は、一つの対象データーから複数個の違う処理工程のハッシュ関数によるハッシュ値を算出する本発明の符号符号分類検索ソフトウェアを記録した記録媒体は、解読難易度が従来のハッシュ関数よりも高くなるので、従来よりも安全であると確信している。
本発明の符号符号分類検索ソフトウェアを記録した記録媒体は、従来からあるハッシュ関数には無い処理工程でる。一つの対象データーから複数個のハッシュ値を算出するので、従来のハッシュ関数を使用してハッシュ値を算出した電子署名や認証や暗号に加えて、違う処理で電子署名や認証や暗号を使用する事が出来る様になるので、処理工程の違う処理工程を持った処理が増えた分だけ、電子署名や認証や暗号の解読不能性が高くなり、インターネット上のセキュリティーの向上に効果を発揮すると考えている。
【００４９】
また、現在では、ファイルに改ざんが無いかどうかを検査するのに、従来からあるハッシュ関数によって算出されたハッシュ値が利用されている。この様な、ファイルに改ざんが無いかどうかの検査にも、本発明の符号符号分類検索ソフトウェアを記録した記録媒体が利用される事が有るであろうと考えている。
【００５０】
〔非特許文献１〕は、242ページから246ページに書かれている、ハッシュ関数とは違う方法が良く解らない。しかしながら、そのハッシュ関数とは違う方法が、分類対象文字列の先頭の二文字分が一致するデーターを分類すると言う方法であると推定できると思う。〔非特許文献１〕の分類対象文字列の先頭の二文字分が一致するデーターを分類すると言う方法を使用するよりも、本発明の符号符号分類検索ソフトウェアを記録した記録媒体は、使用する効果が大きいと考えている。なぜならば、分類される数が細かく決められるので利便性が高いのである。
分類対象文字列の先頭の二文字分が一致するデーターを分類すると言う方法の場合は、2byteの数値で分類できる0から65535の合計65536に分類すると言う異常な数の分類を行う事になるのである。65536に分類すると、多分岐の数が多くなりすぎて、多分岐の分岐を探すだけでも大きな時間のロスが発生すると考えられるからである。
【００５１】
分類数は、ソフトウェアを記録した記録媒体を作成する人間が決定するものである。しかし、人工知能を使用して分類数を決定する事も可能である。人工知能を使用して分類数を変更または、決定する方法を使っていたとしても、簡単なレパートリーなので、本発明の符号符号分類検索ソフトウェアを記録した記録媒体であると明言する。
【図面の簡単な説明】
【００５２】
【図１】符号符号分類検索ソフトウェアのフローチャート図
【図２】符号符号分類検索ソフトウェアで使用した機材の説明図
【図３】符号符号分類検索ソフトウェアの操作画面図
【図４】符号符号分類検索ソフトウェアでデーターベースに記録させた状態の操作画面図
【図５】符号符号分類検索ソフトウェアで検索文字列がデーターベースに無かった場合の操作画面図
【図６】符号符号分類検索ソフトウェアで検索文字列がデーターベースに有った場合の操作画面図
【図７】文字列ファイルの内容を表示した図
【発明を実施するための形態】
【００５３】
符号符号分類検索ソフトウェアは、図２の＜符号符号分類検索ソフトウェアで使用した機材の説明図＞に示した様なハードウェア資源で動作するプログラムである。図２の＜符号符号分類検索ソフトウェアで使用した機材の説明図＞に示した様なハードウェア資源は、図符号Ｂのコンピューター本体と図符号Ａのモニターと図符号Ｃのキーボードと図符号Ｄのマウスの合計４個のパーツで構成された機材であるが、これらの合計４個のパーツで構成された機材を一般的にコンピューターと呼んでいる。図符号Ｂのコンピューター本体は、パーソナルコンピューターと一般的に呼ばれているコンピューターである。図符号Ｂのコンピューター本体には、ハードディスクドライブなどの記録媒体やCPUや本体メモリーなどと呼ばれる装置が内蔵されており、本発明の符号符号分類検索ソフトウェアは、図符号Ｂのコンピューター本体内部に在るハードディスクドライブなどの記録媒体にインストールされているものとする。図符号Ｂのコンピューター本体に接続された外部に在るハードディスクドライブなどの記録媒体に本発明の符号符号分類検索ソフトウェアがインストールされていて、図符号Ｂのコンピューター本体から本発明の符号符号分類検索ソフトウェアを起動する事が出来る場合は、図符号Ｂのコンピューター本体に接続された外部に在るハードディスクドライブなどの記録媒体に本発明の符号符号分類検索ソフトウェアがインストールされているものとする。
本発明の符号符号分類検索ソフトウェアがインストールされている図符号Ｂのコンピューター本体内部に在るハードディスクドライブなどの記録媒体または、図符号Ｂのコンピューター本体に接続された外部に在るハードディスクドライブなどの記録媒体にインストールされている本発明の符号符号分類検索ソフトウェアを起動すると本発明の符号符号分類検索ソフトウェアは、図符号Ｂのコンピューター本体に内蔵された本体メモリーに適時に必要量読み込まれる。図符号Ｂのコンピューター本体に内蔵された本体メモリーに適時に必要量読み込まれた本発明の符号符号分類検索ソフトウェアに書かれたCPUが処理を予定している命令文が必要な時に必要量CPUに読み込まれ、そのCPUに読み込まれた命令文がCPUによって実行される事によってコンピューターによって本発明の符号符号分類検索ソフトウェアが動作する。
従って、本発明の符号符号分類検索ソフトウェアが、ハードウェア資源を使用してどのような工程で処理されるのかを簡単な表現で説明すると、本発明の符号符号分類検索ソフトウェアに書かれた命令文は、コンピューター本体のCPUによって処理されると表現して説明するができるものである。
【００５４】
図２の＜符号符号分類検索ソフトウェアで使用した機材の説明図＞に示した様なハードウェア資源で動作する符号符号分類検索ソフトウェアである事を段落〔００５３〕にて説明したが、コンピューターの形状は、図２の＜符号符号分類検索ソフトウェアで使用した機材の説明図＞に示した様なハードウェア資源に限定できるものではなく、図符号Ａのモニター、図符号Ｂのコンピューター本体、図符号Ｃのキーボード、図符号Ｄのマウスが一体化したものや、図符号Ｄのマウスが存在しない構成のものや、図符号Ａのモニター、図符号Ｂのコンピューター本体の二つを一体化した構成のもの等いろいろある。今後、もっと多くのいろいろな形状のコンピューターが開発されていくであろうと考えられる。図２の＜符号符号分類検索ソフトウェアで使用した機材の説明図＞に示した様なハードウェア資源でなくても、類似と言い得る、いわゆるコンピューターを使用して本発明の符号符号分類検索ソフトウェアを動作させている場合も本発明の符号符号分類検索ソフトウェアである事を明言する。
【実施例】
【００５５】
図２、図３、図４、図５、図６、図７は、実際とは、多少異なる事を明記する。
また、テキストボックスやリストボックスなどの画面に表示する処理工程は、常識的処理なので処理工程を説明していない。
【００５６】
本発明の明細書には、変数を作成すると記述しているが変数が作成される場所は、図符号Ｂのコンピューター本体の内部にある本体メモリーに作成される。但し、ＯＳと呼ばれるソフトウェアによって仮想メモリー領域に作成される場合もある。仮想メモリー領域とは、図符号Ｂのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分を仮想的に本体メモリーとして使用する場合に使用する図符号Ｂのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分の事を言う。この図符号Ｂのコンピューター本体の内部にある本体メモリーまたは、図符号Ｂのコンピューター本体の内部にあるハードディスクドライブなどの記録媒体の一部分を仮想的に本体メモリーとして使用する場合に使用する図符号Ｂのコンピューター本体の内部に在るハードディスクドライブなどの記録媒体の一部分の事をコンピューター内部のメモリー装置と呼ぶ事とする。従って、変数を作成すると記述している場合の変数が作成される場所を端的な表現をして説明するならば、コンピューター内部のメモリー装置内に作成されると言う表現になる。
【００５７】
本発明の明細書では、全て変数や一次元配列を使用してプログラムを作成しているが、多次元配列を使用したり、ジャグ配列やその他の種類の配列を使用したり、ファイルを使用したりする事でも同じ処理が出来ると考えられる。また、変数と、一次元配列と、多次元配列と、ジャグ配列と、その他の種類の配列と、ファイルの組み合わせによっても、同じ処理が出来ると考えられる。これらはプログラムの書き方の違いであって、全て本発明の符号符号分類検索ソフトウェアを記録した記録媒体の単純なレパートリーでしかないと言う事を明言する。また、コンピューターの本体のメモリーに直接アクセスして処理を行う処理がある。コンピューターの本体のメモリーに直接アクセスして処理を行う処理に本発明の符号符号分類検索ソフトウェアを記録した記録媒体を書き換えても、簡単なレパートリーである事を明言する。
本発明では、繰り返し処理に、インデックスを使用する繰り返し処理を使用している。再帰処理と呼ばれる処理や、goto文と呼ばれる処理や、インデックスを使用しない繰り返し処理を使用しても、本発明の処理と同じ処理が出来ると考えられる。しかし、再帰処理と呼ばれる処理や、goto文と呼ばれる処理や、インデックスを使用しない繰り返し処理で本発明と同じ処理を行うと言う処理は、簡単なレパートリーであるから、全て本発明の符号符号分類検索ソフトウェアを記録した記録媒体である事を明言する。
【００５８】
１０進数の数値を２進数の数値に変換する処理と２進数の数値を１０進数の数値に変換する処理の説明を行う。
実施例で１０進数の数値を２進数の数値に変換する処理は、１０進数の数値を2で除算して、除算した結果の余りが0の場合は、0を記録して、除算した結果の余りが1の場合は、1を記録すると言う計算を、2で除算して算出された数値の少数点以下を切り捨てた数値が、0よりも大きい数値である間は、最初の処理に戻って、繰り返し処理する方法で２進数に変換した。この方法で２進数に変換した場合、最初に2で除算した余りが1の位になり、2回目に除算した余りが10の位になり、3回目に除算した余りが100の位になり、4回目に除算した余りが1000の位になると言う処理で２進数に変換処理する。この１０進数の数値を２進数の数値に変換する処理は、常識的処理なので、実施例で処理工程を書いていない。また、この技術で１０進数の数値を２進数に変換した場合は、変換した２進数が８桁に満たない場合でも、前方に相当する左側の位置に0が入力される事のない0と1で構成された２進数となる。必ず、一番左側に相当する、一番大きな位が1となる２進数の算出技術である。
実施例で２進数の数値を１０進数の数値に変換する処理は、コンパイラと呼ばれるソフトウェアを作成する為のソフトウェアに添付された関数を使用している。２進数の数値を１０進数の数値に変換する処理工程も、常識的処理なので実施例で処理工程を書いていない。
他の方法で２進数の数値を１０進数に変換したり、他の方法で１０進数の数値を２進数の数値に変換しても、簡単なレパートリーであるから、本発明の符号符号分類検索ソフトウェアを記録した記録媒体であると明言する。
２進数の数値に変換する処理と２進数の数値を１０進数変換する処理の説明を終了する。
【００５９】
２進数に変換する処理で求められた２進数の説明を行う。
２進数に変換する処理で求められた２進数は、桁数が必ずしも８桁にならない問題がある。理由は、段落〔００５８〕で説明した１０進数の数値を２進数の数値に変換する処理技術で２進数に変換すると、８桁に満たない２進数の前方方向に相当する左側に0が無い、必要最低限の0と1で表した２進数の数値に変換される為である。そこで、２進数に変換した数値が、８桁に満たない場合に数値の左側に0を連結して８桁の２進数に調整する必要が発生する。
２進数に変換する処理で求められた２進数の説明を終わる。
【００６０】
図１の＜符号符号分類検索ソフトウェアのフローチャート図＞を参照の事。図符号Ｏの人為的な手動による操作または入力処理工程と図符号Ｐの符号符号分類検索ソフトウェアとコンピューターによる自動処理工程には、ステップ番号を右肩位置に付してあるが、その右肩位置に付したステップ番号順に説明する事とする。まず、本発明の符号符号分類検索ソフトウェアを記録した記録媒体を起動すると、図３の＜符号符号分類検索ソフトウェアの操作画面図＞の様な操作画面が図符号Ａのモニターに表示される。
【００６１】
ステップ１００の「図符号Ｄのマウスで図符号Ｎの参照ボタンをクリックして文字列ファイルを指定して図符号Ｌの読込ボタンをクリックする」処理工程から開始する。ステップ１００は、人為的な手動による操作または入力処理工程である。
最初のステップ１００の「図符号Ｄのマウスで図符号Ｎの参照ボタンをクリックして文字列ファイルを指定して図符号Ｌの読込ボタンをクリックする」処理工程から、ステップ１０２の「分類対象文字列のハッシュ値を複数個算出して分類対象文字列を分類して記録する」処理工程までは、データーベースに分類対象文字列または、分類対象データーを文字列ファイルから読み込んで、分類対象文字列のハッシュ値を複数個算出して、算出した複数個のハッシュ値を使用して、各々の分類対象文字列を分類して記録する処理を行う処理工程である。
図符号Ｍの文字列ファイルを指定するテキストボックスに図符号Ｃのキーボードなどの入力デバイスを使用して文字列ファイルを指定する事が出来る様になっている。また、図符号Ｎの参照ボタンを図符号Ｄのマウスなどの入力デバイスを使用してクリックする事でハードディスク内を参照して文字列ファイルを選択する事が出来る様になっている。
【００６２】
データーベースについての説明を行う。
本発明では、コンピューターのメモリーに記録された複数のデーターが記録されたものをデーターベースと呼ぶ。本発明では、分類対象データーが複数個記録された文字列ファイルを読込んで、分類してメモリーに記録する処理を行う事でデーターベースをコンピューターのメモリーに作成する。
普通は、ファイルの状態のものをデーターベースと呼び、データーベースをコンピューターのメモリーに読み込んで使用するものである。
実施例で、データーベースに分類記録する為の分類対象文字列が複数記録された文字列ファイルは、図７の＜文字列ファイルの内容を表示した図＞で示した内容で記録されているファイルであるが、記録されている文字は、全て半角英数文字で記録されているファイルを文字列ファイルとして使用した。
データーベースについての説明を終わる。
【００６３】
図符号Ｍの文字列ファイルを指定するテキストボックスに図符号Ｃのキーボードなどの入力デバイスを使用して分類対象文字列を複数記録してあるファイルを指定するか、図符号Ｎの参照ボタンを図符号Ｄのマウスでクリックしてハードディスクの内部を参照してファイルを探し出して指定するかのどちらかの操作をする事で、図符号Ｍの文字列ファイルを指定するテキストボックスに、本発明の符号符号分類検索ソフトウェアを記録した記録媒体の技術によって、コンピューターのメモリーに作成するデーターベースに分類記録する為の分類対象文字列が複数記録された文字列ファイルを指定する。
次に、図符号Ｌの読込ボタンを図符号Ｄのマウスなどの入力デバイスを使用してクリックする事で処理を開始する。
【００６４】
次に、ステップ１０１の「文字ファイルから分類対象文字列を読み込む」処理工程に進む。ステップ１０１は、符号符号分類検索ソフトウェアとコンピューターによる自動処理工程である。
図符号Ｍの文字列ファイルを指定するテキストボックスに、指定された、文字列ファイルのデーターを1byteずつ全て読込めるサイズで8bitの配列を作成して、作成した配列を数値１０配列と呼ぶ事にする。図符号Ｍの文字列ファイルを指定するテキストボックスに、指定された文字列ファイルをバイナリー形式で開いてファイルに記録されている全てのデーターを1byteずつ最初から最後まで全て読み込んで、数値１０配列の最初から最後の位置までに1byteずつ全てのデーターを代入する。
【００６５】
図符号Ｍの文字列ファイルを指定するテキストボックスに、指定された文字列ファイルを一行ずつ読み込む事が出来るサイズで、4byteのString型の配列を作成する。作成した配列をテキスト配列と呼ぶ。文字列ファイルをテキスト形式で開いてデーターを読み込んで、読込んだデーターを一行ずつ、終端文字と改行文字を除いて、テキスト配列の最初から最後の位置まで順番に代入する。
終端文字と改行文字の説明を行う。
ASCIIコードには、制御コードと呼ばれる文字コードがある。文字列の最後に使用されるASCIIコードの制御コードと呼ばれる文字コードが、日本語の「。」に相当する終端文字である。終端文字の文字コードの数値は、「13」である。また、ASCIIコードの制御コードと呼ばれる文字コードには、改行文字がある。改行する為のコードである。改行文字の文字コードの数値は、「10」である。
終端文字と改行文字の説明を終わる。
【００６６】
次に、ステップ１０２の「分類対象文字列のハッシュ値を複数個算出して分類対象文字列を分類して記録する」処理工程に進む。ステップ１０２は、符号符号分類検索ソフトウェアとコンピューターによる自動処理工程である。
【００６７】
テキスト配列と同じサイズで、4byteのString型の配列を４個作成する。作成した４個の配列を各々、第１分類配列、第２分類配列、第３分類配列、第４分類配列と呼ぶ。8byteのString型の変数を２個作成する。作成した２個の変数を各々、第１ハッシュ２進変数、第２ハッシュ２進変数と呼ぶ。２個のサイズで8bitの配列を作成する。作成した配列をハッシュ配列と呼ぶ。
ハッシュ配列の最初の位置と最後の位置に-1を代入する事で初期化する。
8bitの変数を５個作成する。作成した５個の変数を各々、インデ１変数、インデ２変数、インデ３変数、インデ４変数、インデ５変数と呼ぶ。
【００６８】
以下に、ハッシュ配列の最初の位置と最後の位置に-1を代入して初期化する理由について説明する。
ハッシュ配列には、算出されたハッシュ値を代入するのであるが、ハッシュ値は、0が算出される事が有るので-1を代入しておく事でハッシュ値が代入されていない事を明確にする為である。
これで、ハッシュ配列の最初の位置と最後の位置に-1を代入して初期化する理由の説明を終わる。
【００６９】
次に、繰り返し処理を行う。この繰り返し処理をハッシュ分類繰り返し処理と呼ぶ。
実施例でのハッシュ値の算出についての説明を行う。
ハッシュ分類繰り返し処理では、第１ハッシュ値と第２ハッシュ値を算出して配列に分類対象文字列を分類して代入する処理を行う繰り返し処理である。第１ハッシュ値は、分類対象文字列の先頭の位置の文字を一文字取得して２進数に変換して、変換した２進数の先頭から８桁取得して、取得した８桁の２進数の0と1を全て加算して２で除算した剰余数とすると言う処理とし、第２ハッシュ値は、分類対象文字列の先頭の位置の文字を一文字取得して２進数に変換して、変換した２進数の先頭から７桁取得して、取得した７桁の２進数を１０進数に変換して、１０進数に変換した数値を２で除算した剰余数とすると言う処理を行う事にした。
実施例でのハッシュ値の算出についての説明を終わる。
【００７０】
ハッシュ分類繰り返し処理では、数値１０配列に代入された全てのデーターに、以下の処理を行う。
次に、分岐処理を行う。この分岐処理をハッシュ値計算分岐処理と呼ぶ。
ハッシュ値計算分岐処理では、数値１０配列のインデックスが0の場合と、数値１０配列のインデックスが1以上の場合で、数値１０配列のインデックスで取得したデーターが13の場合か、数値１０配列のインデックスで取得したデーターが10の場合のどちらかの場合と、数値１０配列のインデックスが1以上の場合で、数値１０配列のインデックスから-1減算したインデックスで取得したデーターが10の場合と、その他の場合に分岐する。
【００７１】
ハッシュ値計算分岐処理で、数値１０配列のインデックスが0の場合は、以下の処理を行う。
数値１０配列のインデックスで取得したデーターを２進数に変換して、変換した２進数が８桁に満たない場合は、変換した２進数の先頭の位置に相当する左側に８桁に満たない分だけ0を連結して８桁に調整する。８桁に調整した２進数の数値の先頭から８桁取得して、第１ハッシュ２進変数に代入する。第１ハッシュ２進変数に代入された２進数の全ての桁の0と1を加算した数値を求めて2で除算した剰余数を求めてハッシュ配列の最初の位置に代入する。
第１ハッシュ２進変数に代入された２進数の先頭から７桁分を抽出して第２ハッシュ２進変数に代入する。第２ハッシュ２進変数に代入された２進数を１０進数に変換して、１０進数に変換した数値を2で除算した剰余数を求めてハッシュ配列の最後の位置に代入する。
ハッシュ値計算分岐処理で、数値１０配列のインデックスが1以上の場合で、数値１０配列のインデックスで取得したデーターが13の場合か、数値１０配列のインデックスで取得したデーターが10の場合のどちらかの場合は、以下の処理を行う。
ハッシュ配列の最初の位置と最後の位置に-1を代入して初期化する。
【００７２】
ハッシュ値計算分岐処理で、数値１０配列のインデックスが1以上の場合で、数値１０配列のインデックスから-1減算したインデックスで取得したデーターが10の場合は、以下の処理を行う。
数値１０配列のインデックスで取得したデーターを２進数に変換して、変換した２進数が８桁に満たない場合は、変換した２進数の先頭の位置に相当する左側に８桁に満たない分だけ0を連結して８桁に調整する。８桁に調整した２進数の数値の先頭から８桁取得して、第１ハッシュ２進変数に代入する。第１ハッシュ２進変数に代入された２進数の全ての桁の0と1を加算した数値を求めて2で除算した剰余数を求めてハッシュ配列の最初の位置に代入する。
第１ハッシュ２進変数に代入された２進数の先頭から７桁分を抽出して第２ハッシュ２進変数に代入する。第２ハッシュ２進変数に代入された２進数を１０進数に変換して、１０進数に変換した数値を2で除算した剰余数を求めてハッシュ配列の最後の位置に代入する。
【００７３】
ハッシュ値計算分岐処理で、その他の場合は、以下の処理を行う。
ハッシュ配列の最初の位置と最後の位置に-1を代入して初期化する。
ハッシュ値計算分岐処理を終了する。
【００７４】
次に、分岐処理を行う。この分岐処理を分類代入分岐処理と呼ぶ。
分類代入分岐処理の簡単な説明を行う。
分類代入分岐処理では、ハッシュ配列の最初の位置のデーターと最後の位置のデーターの組み合わせで処理を分岐する。
分類代入分岐処理の簡単な説明を終わる。
【００７５】
分類代入分岐処理では、ハッシュ配列の最初の位置のデーターとハッシュ配列の最後の位置のデーターが両方とも0の場合と、ハッシュ配列の最初の位置のデーターが1で、ハッシュ配列の最後の位置のデーターが0の場合と、ハッシュ配列の最初の位置のデーターが0で、ハッシュ配列の最後の位置のデーターが1の場合とハッシュ配列の最初の位置のデーターとハッシュ配列の最後の位置のデーターが両方とも1の場合とハッシュ配列の最初の位置のデーターとハッシュ配列の最後の位置のデーターのどちらか一方が-1の場合に分岐する。
【００７６】
分類代入分岐処理で、ハッシュ配列の最初の位置のデーターとハッシュ配列の最後の位置のデーターが両方とも0の場合は、以下の処理を行う。
インデ１変数のデーターをインデックスとして使用してテキスト配列から文字列を取得して、第１分類配列のインデックスとしてインデ２変数のデーターを使用して第１分類配列に代入する。インデ１変数に1を加算する。インデ２変数に1を加算する。ハッシュ配列の最初の位置と最後の位置に-1を代入して初期化する。
【００７７】
分類代入分岐処理で、ハッシュ配列の最初の位置のデーターが1で、ハッシュ配列の最後の位置のデーターが0の場合は、以下の処理を行う。
インデ１変数のデーターをインデックスとして使用してテキスト配列から文字列を取得して、第２分類配列のインデックスとしてインデ３変数のデーターを使用して第２分類配列に代入する。インデ１変数に1を加算する。インデ３変数に1を加算する。ハッシュ配列の最初の位置と最後の位置に-1を代入して初期化する。
【００７８】
分類代入分岐処理で、ハッシュ配列の最初の位置のデーターが0で、ハッシュ配列の最後の位置のデーターが1の場合は、以下の処理を行う。
インデ１変数のデーターをインデックスとして使用してテキスト配列から文字列を取得して、第３分類配列のインデックスとしてインデ４変数のデーターを使用して第３分類配列に代入する。インデ１変数に1を加算する。インデ４変数に1を加算する。ハッシュ配列の最初の位置と最後の位置に-1を代入して初期化する。
【００７９】
分類代入分岐処理で、ハッシュ配列の最初の位置のデーターとハッシュ配列の最後の位置のデーターが両方とも1の場合は、以下の処理を行う。
インデ１変数のデーターをインデックスとして使用してテキスト配列から文字列を取得して、第４分類配列のインデックスとしてインデ５変数のデーターを使用して第４分類配列に代入する。インデ１変数に1を加算する。インデ５変数に1を加算する。ハッシュ配列の最初の位置と最後の位置に-1を代入して初期化する。
【００８０】
分類代入分岐処理で、ハッシュ配列の最初の位置のデーターとハッシュ配列の最後の位置のデーターのどちらか一方が-1の場合は、何も処理しない。
分類代入分岐処理を終わる。
数値１０配列のインデックスに1を加算して、ハッシュ分類繰り返し処理の最初の処理に戻って、数値１０配列に代入された次のデーターの処理を行うと言う繰り返し処理を行い、数値１０配列に代入された全てのデーターを処理し終わったら、ハッシュ分類繰り返し処理を終わる。
【００８１】
ハッシュ繰り返し処理が終了した場合の処理結果の説明を行う。
ハッシュ繰り返し処理が終わるとデーターベースに分類対象文字列を分類して記録する処理が終了した事になる。
ハッシュ繰り返し処理が終了した場合の処理結果の説明を終わる。
【００８２】
第１分類配列と、第２分類配列と、第３分類配列と、第４分類配列の４個の配列の配列サイズを調整する。図符号Ｅの分類１のデーターを表示するリストボックスに、第１分類配列のデーターを全て表示する。図符号Ｈの分類２のデーターを表示するリストボックスに、第２分類配列のデーターを全て表示する。図符号Ｊの分類１のデーターを表示するリストボックスに、第３分類配列のデーターを全て表示する。図符号Ｋの分類１のデーターを表示するリストボックスに、第４分類配列のデーターを全て表示する。
【００８３】
以下に、配列のサイズ調整の説明を行う。
String型の配列の場合は、配列のデーターを代入する事が出来る領域のどこまでの位置にデーターが入力されているかを調べる事で、必要な配列の最初の位置から最後の位置までの配列のサイズを知る事が出来る。String型の配列の場合は、必要な配列のサイズを知る事が出来る事から、逆に必要のない配列の部分をカットして配列の要素数を減らすと言う配列のサイズの調整を行う事が出来る。他方、String型以外の配列の場合は、配列に空白が無く、配列を作成すると同時に最初から0が入力されているのでサイズ調整する事が出来ない。配列のサイズ調整は、常識的処理である。
配列のサイズ調整の説明を終了する。
【００８４】
次に、ステップ１０３の「図符号Ｃのキーボードで図符号Ｆの検索文字列を入力するテキストボックスに文字列を入力して図符号Ｄのマウスで図符号Ｉの検索ボタンをクリックする処理工程」に進む。ステップ１０３は、人為的な手動による操作または入力処理工程である。
ステップ１０３の「図符号Ｃのキーボードで図符号Ｆの検索文字列を入力するテキストボックスに文字列を入力して図符号Ｄのマウスで図符号Ｉの検索ボタンをクリックする」処理工程から、最後のステップ１０６の「検索結果を図符号Ｇの検索結果テキストボックスに表示する」処理工程までの処理は、分類対象文字列の各々のデーターから複数個のハッシュ値を算出して、算出した複数個のハッシュ値を使用して分類対象文字列の各々のデーターを分類して記録したデーターベースから、検索したい文字列を検索する処理工程である。
図符号Ｃのキーボードで、図符号Ｆの検索文字列を入力するテキストボックスに、データーベースに記録されている分類対象文字列の中から、検索したい文字列が有るかどうかを検索する為の検索したい任意の文字列を入力して、図符号Ｄのマウスで、図符号Ｉの検索ボタンをクリックして検索を開始する。
【００８５】
次に、ステップ１０４の「検索したい文字列を文字コードと言う機械語の数値として読込む」処理工程に進む。ステップ１０４は、符号符号分類検索ソフトウェアとコンピューターによる自動処理工程である。
100byteのString型の変数を作成して、作成した100byteのString型の変数をテスト文字列変数と呼ぶ。図符号Ｆの検索文字列を入力するテキストボックスに入力された文字列を全て取得して、テスト文字列変数に代入する。
以下に、図符号Ｆの検索文字列を入力するテキストボックスに入力された文字列を全て取得して、テスト文字列変数に代入する処理を説明する。
分類対象データーの各々のデーターから複数個のハッシュ値を算出して、算出したハッシュ値を使用して分類対象データーの各々のデーターを分類して記録したデーターベースから検索したい任意の文字列が入力されたテキストボックスのデーターを全て取得して、テスト文字列変数に代入すると言う事である。
図符号Ｆの検索文字列を入力するテキストボックスに入力された文字列を全て取得して、テスト文字列変数に代入する処理を説明を終わる。
テスト文字列変数に代入力された文字列を全て1byteずつテキスト形式でファイルに記録して保存する。保存したファイルをテスト文字列ファイルと呼ぶ。テスト文字列ファイルをバイナリー形式で開いて1byteずつ最後まで読み込めるサイズで配列を作成する。作成した配列を数値テスト文字列配列と呼ぶ。テスト文字列ファイルをバイナリー形式で開いて、数値テスト文字列配列の最初の位置から最後の位置までに、1byteずつ全て代入する。
【００８６】
次に、ステップ１０５の「検索したい文字列のハッシュ値を複数個算出してデーターベースから検索する」処理工程に進む。ステップ１０５は、符号符号分類検索ソフトウェアとコンピューターによる自動処理工程である。
4byteのString型の変数を作成する。この作成した4byteのString型の変数を検索結果変数と呼ぶ。２個のサイズで8bitの配列を作成する。作成した配列をハッシュ２配列と呼ぶ。8byteのString型の変数を２個作成する。作成した２個の変数を各々、第１ハッシュ２進２変数、第２ハッシュ２進２変数と呼ぶ。
数値テスト文字列配列の最初の位置に代入されているデーターを取得して、取得したデーターを２進数に変換して、変換した２進数が８桁に満たない場合は、変換した２進数の先頭の位置に相当する左側に８桁に満たない分だけ0を連結して８桁に調整して、８桁に調整した２進数を第１ハッシュ２進２変数に代入する。第１ハッシュ２進２変数に代入された２進数の全ての桁の0と1を加算して求められた数値を2で除算した剰余数を求めて、ハッシュ２配列の最初の位置に代入する。
第１ハッシュ２進２変数に代入された２進数の先頭から７桁分の２進数を抽出して第２ハッシュ２進２変数に代入する。第２ハッシュ２進２変数に代入された２進数を１０進数に変換して、１０進数に変換した数値を2で除算した剰余数を求めてハッシュ２配列の最後の位置に代入する。
【００８７】
以下に分岐処理を行う。この分岐処理を分類検索分岐処理と呼ぶ。
分類検索分岐処理では、ハッシュ２配列の最初の位置に代入されたデーターとハッシュ２配列の最後の位置に代入されたデーターが両方とも0の場合とハッシュ２配列の最初の位置に代入されたデーターが1で、ハッシュ２配列の最後の位置に代入されたデーターが0の場合と、ハッシュ２配列の最初の位置に代入されたデーターが0で、ハッシュ２配列の最後の位置に代入されたデーターが1の場合と、ハッシュ２配列の最初の位置に代入されたデーターとハッシュ２配列の最後の位置に代入されたデーターが両方とも1の場合に分岐する。
【００８８】
分類検索分岐処理で、ハッシュ２配列の最初の位置に代入されたデーターとハッシュ２配列の最後の位置に代入されたデーターが両方とも0の場合は、繰り返し処理を行う。この繰り返し処理を分類１繰り返し処理と呼ぶ。
分類１繰り返し処理では、第１分類配列の最初から最後までのデーターとテスト文字列変数に代入された文字列と等しいかどうかを検査する繰り返し処理を行う。以下に分岐する。この分岐を文字列代入１分岐処理と呼ぶ。
文字列代入１分岐処理では、テスト文字列変数に代入された文字列を第１分類配列に代入されたのデーターを検査して等しい文字列である場合と、テスト文字列変数に代入された文字列を第１分類配列に代入されたデーターを検査して等しい文字列で無い場合とに分岐する。
文字列代入１分岐処理で、テスト文字列変数に代入された文字列と第１分類配列に代入されたデーターを検査して等しい文字列である場合は、第１分類配列のデーターを検索結果変数に代入して、文字列代入１分岐処理を終って、分類１繰り返し処理を終了する。
文字列代入１分岐処理で、テスト文字列変数に代入された文字列を第１分類配列に代入されたデーターを検査して等しい文字列で無い場合は、何も処理をしない。
文字列代入１分岐処理を終了する。
分類１繰り返し処理の先頭に戻って、第１分類配列の次のデーターの検査を行う。
第１分類配列の最初から最後までのデーターを検査し終わったら、分類１繰り返し処理を終わる。
【００８９】
分類検索分岐処理で、ハッシュ２配列の最初の位置に代入されたデーターが1で、ハッシュ２配列の最後の位置に代入されたデーターが0の場合は、繰り返し処理を行う。この繰り返し処理を分類２繰り返し処理と呼ぶ。
分類２繰り返し処理では、第２分類配列の最初から最後までのデーターとテスト文字列変数に代入された文字列と等しいかどうかを検査する繰り返し処理を行う。以下に分岐する。この分岐を文字列代入２分岐処理と呼ぶ。
文字列代入２分岐処理では、テスト文字列変数に代入された文字列を第２分類配列に代入されたのデーターを検査して等しい文字列である場合と、テスト文字列変数に代入された文字列を第２分類配列に代入されたデーターを検査して等しい文字列で無い場合とに分岐する。
文字列代入２分岐処理で、テスト文字列変数に代入された文字列と第２分類配列に代入されたデーターを検査して等しい文字列である場合は、第２分類配列のデーターを検索結果変数に代入して、文字列代入２分岐処理を終って、分類２繰り返し処理を終了する。
文字列代入２分岐処理で、テスト文字列変数に代入された文字列を第２分類配列に代入されたデーターを検査して等しい文字列で無い場合は、何も処理をしない。
文字列代入２分岐処理を終了する。
分類２繰り返し処理の先頭に戻って、第２分類配列の次のデーターの検査を行う。
第２分類配列の最初から最後までのデーターを検査し終わったら、分類２繰り返し処理を終わる。
【００９０】
分類検索分岐処理で、ハッシュ２配列の最初の位置に代入されたデーターが0で、ハッシュ２配列の最後の位置に代入されたデーターが1の場合は、繰り返し処理を行う。この繰り返し処理を分類３繰り返し処理と呼ぶ。
分類３繰り返し処理では、第３分類配列の最初から最後までのデーターとテスト文字列変数に代入された文字列と等しいかどうかを検査する繰り返し処理を行う。以下に分岐する。この分岐を文字列代入３分岐処理と呼ぶ。
文字列代入３分岐処理では、テスト文字列変数に代入された文字列を第３分類配列に代入されたのデーターを検査して等しい文字列である場合と、テスト文字列変数に代入された文字列を第３分類配列に代入されたデーターを検査して等しい文字列で無い場合とに分岐する。
文字列代入３分岐処理で、テスト文字列変数に代入された文字列と第３分類配列に代入されたデーターを検査して等しい文字列である場合は、第３分類配列のデーターを検索結果変数に代入して、文字列代入３分岐処理を終って、分類３繰り返し処理を終了する。
文字列代入３分岐処理で、テスト文字列変数に代入された文字列を第３分類配列に代入されたデーターを検査して等しい文字列で無い場合は、何も処理をしない。
文字列代入３分岐処理を終了する。
分類３繰り返し処理の先頭に戻って、第３分類配列の次のデーターの検査を行う。
第３分類配列の最初から最後までのデーターを検査し終わったら、分類３繰り返し処理を終わる。
【００９１】
分類検索分岐処理で、ハッシュ２配列の最初の位置に代入されたデーターとハッシュ２配列の最後の位置に代入されたデーターが両方とも1の場合は、繰り返し処理を行う。この繰り返し処理を分類４繰り返し処理と呼ぶ。
分類４繰り返し処理では、第４分類配列の最初から最後までのデーターとテスト文字列変数に代入された文字列と等しいかどうかを検査する繰り返し処理を行う。以下に分岐する。この分岐を文字列代入４分岐処理と呼ぶ。
文字列代入４分岐処理では、テスト文字列変数に代入された文字列を第４分類配列に代入されたのデーターを検査して等しい文字列である場合と、テスト文字列変数に代入された文字列を第４分類配列に代入されたデーターを検査して等しい文字列で無い場合とに分岐する。
文字列代入４分岐処理で、テスト文字列変数に代入された文字列と第４分類配列に代入されたデーターを検査して等しい文字列である場合は、第４分類配列のデーターを検索結果変数に代入して、文字列代入４分岐処理を終わって、分類４繰り返し処理を終了する。
文字列代入４分岐処理で、テスト文字列変数に代入された文字列を第４分類配列に代入されたデーターを検査して等しい文字列で無い場合は、何も処理をしない。
文字列代入４分岐処理を終わる。
分類４繰り返し処理の先頭に戻って、第４分類配列の次のデーターの検査を行う。
第４分類配列の最初から最後までのデーターを検査し終わったら、分類４繰り返し処理を終わる。
これで、分類検索分岐処理を終わる。
検査結果変数に代入されたデーターの説明を行う。
検査結果変数には、検索結果で得られた文字列が代入されている。検索した結果、データーベースに記録されていないと判断された結果の場合は、検査結果変数には、データーが何も代入されていない状態で分類検索分岐処理が終了する事になる。従って、検査結果変数に文字列が代入されているかどうかを検査する事で検査結果が解る。
検査結果変数に代入されたデーターの説明を終わる。
【００９２】
次に、ステップ１０６の「検索結果を図符号Ｇの検索結果テキストボックスに表示する」処理工程に進む。ステップ１０６は、符号符号分類検索ソフトウェアとコンピューターによる自動処理工程である。
検査結果変数に文字列が代入されているかどうかを検査して、検査結果変数に文字列が代入されている場合と、検査結果変数に文字列が代入されていない場合とに分岐する。この分岐を検査結果表示分岐と呼ぶ。
検査結果表示分岐で、検査結果変数に文字列が代入されている場合は、図符号Ｇの検索結果テキストボックスに、検査結果変数に代入されている文字列を表示する。
検査結果表示分岐で、検査結果変数に文字列が代入されていない場合は、図符号Ｇの検索結果テキストボックスに、「該当文字列がありません」と表示する。
検査結果表示分岐を終了する。
これで、データーベースから検索したい文字列を検索する検索処理の説明を終了する。
【符号の説明】
【００９３】
Ａ：モニター
Ｂ：コンピューター本体
Ｃ：キーボード
Ｄ：マウス
Ｅ：分類１のデーターを表示するリストボックス
Ｆ：検索文字列を入力するテキストボックス
G：検索結果を表示するテキストボックス
Ｈ：分類２のデーターを表示するリストボックス
Ｉ：検索ボタン
Ｊ：分類３のデーターを表示するリストボックス
Ｋ：分類４のデーターを表示するリストボックス
Ｌ：読込ボタン
Ｍ：文字列ファイルを指定するテキストボックス
Ｎ：参照ボタン
Ｏ：人為的な手動による操作または入力処理工程
Ｐ：符号符号分類検索ソフトウェアとコンピューターによる自動処理工程
【図１】
2019067096.tif 000003
【図２】
2019067096.tif 000004
【図３】
2019067096.tif 000005
【図４】
2019067096.tif 000006
【図５】
2019067096.tif 000007
【図６】
2019067096.tif 000008
【図７】
2019067096.tif 000009
【手続補正書】
【提出日】平成29年11月9日(2017.11.9)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００３
【補正方法】変更
【補正の内容】
【０００３】
〔非特許文献１〕は、ZIP形式の圧縮技術とLZH形式の圧縮技術を説明した文献である。それとともに、今日までに開発された圧縮技術を紹介している文献である。
以下に、「求める」と、「生成」と、「算出」と、「処理」は、同じ意味として使用する。また、本発明の符号符号分類検索ソフトウェアを記録した記録媒体の事を符号符号分類検索ソフトウェアと略して呼んだりする事がある。また、関数とは、ある処理を行う処理工程の事を言い、ソフトウェアと同じ意味で使用する。また、ハッシュ関数とは、データーを代表する数値を生成する為の処理工程の事を言う事とする。分類しようとするデーターのハッシュ値を算出して、ハッシュ値を使用して分類するのに使用したり、ハッシュ値を使用して分類したデーターが、何処の分類に属しているかを検索したり、ハッシュ値を使用して暗号化したり、ハッシュ値を使用して一個のデーターを検索する処理を行うのに使用したりするのがハッシュ関数である。また、このハッシュ関数から算出された数値の事をハッシュ値と呼んだり、ハッシュコードと呼んだり、符号と呼んだりする。また、分類しようとするデーターの事を分類対象データーと呼んだりする。また、代表値を算出する任意のデーターを対象データーと呼んだりする。また、分類しようとする文字列の事を分類対象文字列と呼んだりする。また、検索したい文字列の事を検索したいデーターと呼んだりする。また、データーベースに記録されている文字列やデーターの事を検索対象文字列と呼んだり、検索対象データーと呼んだりする。
ハッシュ関数の事を簡単に言い換えると、ハッシュ関数とは、ハッシュコードを生成するソフトウェアの事であると言える。本発明の符号符号分類検索ソフトウェアを記録した記録媒体の事を符号符号分類検索ソフトウェアと略して呼ぶ事がある。
この〔非特許文献１〕の文献では、113ページから114ページに、データーを基にハッシュ関数を使用してハッシュ値を生成して、生成したハッシュ値でデーターを分類して保存する事で検索処理を高速化する方法を簡単に説明している。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
〔非特許文献２〕の533ページから535ページに、２重ハッシュ法と言う技術が記載されている。二個のハッシュ値を算出して、算出した二個のハッシュ値で探索と言う処理を行う技術である。この技術は、検索に使用する記述である。ばらばらな文字の集合から、同じ文字を集めると言う処理を行う為の処理に使われるものである。本発明は、複数個のハッシュ値を求めて、求めた複数個のハッシュ値で分類する為の技術である。本発明とは、使用目的が全く違う事から、本発明とは、全く別の技術であると考えられる。また、２重ハッシュ法では、二個目のハッシュ値が、絶対に「0」と言う数値であってはならないと言う条件がある。本発明では、複数個のハッシュ値の全てに、算出されるハッシュ値が、「0」であってはならないと言う様な数値の規制は無い。使用目的が全く違事から起きている大きな違いである。二個目のハッシュ値が「0」であってはならないと言う条件の有る無しからも、本発明の符号符号分類検索ソフトウェアを記録した記録媒体とは、違うものであると言えると考えている。