2012-01-14 7 views
10

私はSolrでいくつかの基本的な同義語を設定しようとしています。私が取り組んできたものである:solr同義語を動作させる方法

たち、アメリカ、米国

私の理解である類義語ファイルにユーザーが米国の検索、および米国または米国を含む文書を取り戻すことができますことを追加状態。ユーザーが米国または米国に入国した場合の同意書。

残念ながら、私が検索すると、3つの単語すべてを含むアイテムの結果が表示されます。これは、ORではなく同義語のANDを実行しています。

私はデバッグをオンにした場合、これは私が見たもの確かである(プラスいくつかのステミング):

(+DisjunctionMaxQuery(((westCite:us westCite:usa westCite:unit) | (text:us text:usa text:unit) | (docketNumber:us docketNumber:usa docketNumber:unit) | ((status:us status:usa status:unit)^1.25) | (court:us court:usa court:unit) | (lexisCite:us lexisCite:usa lexisCite:unit) | ((caseNumber:us caseNumber:usa caseNumber:unit)^1.25) | ((caseName:us caseName:usa caseName:unit)^1.5))))/no_coord

私はこれを引き起こすことが何か間違ったことをやっていますか?私のdefaultOperatorはANDに設定されていますが、私は同義語フィルタがそのことを理解していると思います。

答えて

20

インデックス作成時のみSynonymFilterFactoryを使用してください。クエリでは使用しないでください。

ドキュメントだけでなく、この示唆:同義語検索をよりよく理解するため http://wiki.apache.org/solr/AnalyzersTokenizersTokenFilters#solr.SynonymFilterFactory

+0

これを解決してうれしく思います*前に、私はライブサイトで60万のドキュメントを索引します... – mlissner

2

を、私たちは実装の段階のプロセスでステップを持つことになります(私はSolrの6.5を使用していますが*バージョン。):

ステップ1:

ダウンロードcountry-synonyms.txtテキストファイルと、以下のパスに配置します:

パス:\のSolr-6.5.1 \サーバ\ Solrの\ yourCore \ CONF

yourCore::コアの名前は、それに応じて

ステップ2を変更しなければなりません

フィールドタイプの追加上記の同じパスにあるの管理スキーマファイル

ステップ3: 同じファイル(マネージド・スキーマ)を入力であなたのフィールド(国籍)を追加します。

<field name="Nationality" type="country" indexed="true" stored="true"/> 

ステップ4: 再起動してSolr。

solr restart -p <your solr port> 

ステップ5:

国籍を含むフィールドを使用してデータをインポート***

ステップ6:

今すぐ下記の例とテストに問い合わせます:

クエリ

  1. 国籍:US
  2. 国籍:USA
  3. 国籍:米国
  4. 国籍:アメリカ

の米国上記のすべてのクエリはあなたに同じ結果が得られます。

注::***上記の手順を実行した後にのみ、ソルの再起動が必要です。既存のデータでは機能しない可能性があります(詳細はAnalyzersTokenizersTokenFiltersを参照してください)

関連する問題