重み付け検索 ― 2006年01月11日 13時01分29秒
検索式に重みを指定することで、スコアを操作する検索です。
検索結果をスコア順で表示する場合には、重みを大きくしたものはより上位に表示されます。
例えば検索式が "word1^5 or word2^2"の場合、"word1" の重みが5で "word2"の重みが2となり、"^" は区切り記号となります。
単純な重み付けの実装としては、単語のみに重みの指定ができるものです。
より複雑なものとしては、単語、部分一致検索式、正規表現検索式が考えられます。
フレイズ検索式の場合は、個々の単語に重みを付けることや、フレイズ全体に重みを付けることを検討しなければなりません。
また、グループ検索式にも重みを付けることができても良いでしょう。
フィールド検索式も同様です。
AND,OR,NOT検索は、重み付けされた語を使って演算するだけですので、特に何か特別な処理が必要ということはないでしょう。
注意しなければならないのは、単純な重み付けの実装として、単語のみとした場合でも日本語の場合は、分解してフレイズ検索になることがあることです。
この場合には、分解された個々の単語に指定した同じ重みを付けるのか、
あるいは分解された場合は、指定した重みは無効(重み1)として処理するのかのいづれかを選択しなければならないでしょう。
この例では、重みの区切り記号として "^" を使っていますので、"^" 自体を検索したい場合のことを少し考慮しなければならないということを忘れてはいけません。
Namazu では、"(",")", "{", "}", "\"", "*", "/", "+",":" 等の記号(メタ文字)に特別な意味を持たせていますが、そのほとんどが単語の先頭か末尾といった位置に限られるため、メタ文字のエスケープについてはあまり考えられていません。
メタ文字単体を検索する場合には "^" や {^} といった中身が単一の単語のフレイズ検索の形式で指定する方法があります。(この場合は、単語検索として処理されます。)
検索結果をスコア順で表示する場合には、重みを大きくしたものはより上位に表示されます。
例えば検索式が "word1^5 or word2^2"の場合、"word1" の重みが5で "word2"の重みが2となり、"^" は区切り記号となります。
単純な重み付けの実装としては、単語のみに重みの指定ができるものです。
より複雑なものとしては、単語、部分一致検索式、正規表現検索式が考えられます。
フレイズ検索式の場合は、個々の単語に重みを付けることや、フレイズ全体に重みを付けることを検討しなければなりません。
また、グループ検索式にも重みを付けることができても良いでしょう。
フィールド検索式も同様です。
AND,OR,NOT検索は、重み付けされた語を使って演算するだけですので、特に何か特別な処理が必要ということはないでしょう。
注意しなければならないのは、単純な重み付けの実装として、単語のみとした場合でも日本語の場合は、分解してフレイズ検索になることがあることです。
この場合には、分解された個々の単語に指定した同じ重みを付けるのか、
あるいは分解された場合は、指定した重みは無効(重み1)として処理するのかのいづれかを選択しなければならないでしょう。
この例では、重みの区切り記号として "^" を使っていますので、"^" 自体を検索したい場合のことを少し考慮しなければならないということを忘れてはいけません。
Namazu では、"(",")", "{", "}", "\"", "*", "/", "+",":" 等の記号(メタ文字)に特別な意味を持たせていますが、そのほとんどが単語の先頭か末尾といった位置に限られるため、メタ文字のエスケープについてはあまり考えられていません。
メタ文字単体を検索する場合には "^" や {^} といった中身が単一の単語のフレイズ検索の形式で指定する方法があります。(この場合は、単語検索として処理されます。)
コメント
トラックバック
このエントリのトラックバックURL: http://namazu.asablo.jp/blog/2006/01/11/207229/tb
※なお、送られたトラックバックはブログの管理者が確認するまで公開されません。
コメントをどうぞ
※メールアドレスとURLの入力は必須ではありません。 入力されたメールアドレスは記事に反映されず、ブログの管理者のみが参照できます。
※なお、送られたコメントはブログの管理者が確認するまで公開されません。