2011-06-23 4 views
1

私はLuceneが初めてで、私のプロジェクトは小冊子のセット に特化した検索を提供することです。私はLucene Java 3.1を使用しています。フレーズクエリと用語集へのアプローチ

基本的な考え方は、インデックスを参照してどのブックレットとページ番号がクエリに一致するかを調べることで、(大文字と小文字ではなく) 小冊子の情報をどこで探すかを知る手助けをすることです。私のインデックスにある各文書は、小冊子の1つの特定のページを表しています。

これまでのところ、冊子から生のテキストを抜き取って、 をインデックスに挿入して、両方とも のStandardAnalyzerを使用して問題なくクエリを実行できました。

私の一般的な質問は次のとおりです。
インデックスの多くのクエリには、 小冊子に記載されている場所の名前の検索が含まれます。いくつかの地名は表記上の変種を使用しています。たとえば、本体テキスト では、1ページで「Ship Creek」と呼ばれますが、地図図では「Ship Cr」と表示されることがあります。または "Ship Ck。私が知る必要があるのは、2つの連続した単語を単一の単語として扱い、表記の変種を同義語として追加する方法にあります。

私の目標はもちろん、どのバリアントでも検索し、すべての出現をキャッチすることです。私が(Ship AND(Cr Ck Creek))を検索すると、[ship]と[cr]/[ck]/[creek]の間に偽陽性につながる言葉が現れることがあるため、

したがって、簡単に言えば、StandardAnalyzerによって提供される基本的なものがまだ必要ですが、完全な用語として地名を発行するための特定の用語グループを使用し、おそらく異形をカバーするために同義語を挿入します。

たとえば、「上流のShip Creekの口から許可された...」というテキストは トークン[許可]、[口]、[船の小道]、[上流]になります。おそらくトークンフィルタを経由して に沿って、[船の小道]の用語は[船の小道] [船のck] [船のcr]に拡大します。

ボーナスとしては、[例外]、[船の小道]、[バード・クリーク]、[バーク・クリーク]のように、船舶、鳥、および キャンベル小川]、 [campbell Creek]、[where]、[limit]。

これはかなり基本的な使用例のようですが、これを達成するためにLucene contribまたはSOLRの既存コンポーネントをどのように使用できるかはわかりません。何らかのTokenFilterで検出とマージを行うべきでしょうか?カスタムのAnalyzer実装が必要ですか?

用語のグループ化のいくつかは、おそらく発見的に行うことができます[]、[小川]は[小川] ですが、それは場合に役立ちます私はまた、本文中で言及した場所の完全なリストを持っています。

ご協力いただきありがとうございます。

答えて

0

あなたは、私はあなたの「ボーナス」問題を解決するために、既存の機能を認識していないよ、など「CR」

の同義語「CK」を有するとSolrのSynonym Filter.だけでセットアップ「小川」を使用することができます。