質問

SolRに基本的な同義語を設定しようとしています。私が取り組んできたものは次のとおりです。

米国、米国、米国

私の理解では、それを同義語ファイルに追加すると、ユーザーが当社を検索し、米国または米国を含むドキュメントを取り戻すことができます。ユーザーが米国または米国に入れる場合の場合。

残念ながら、これを適切に配置すると、検索を行うと、3つの単語すべてを含むアイテムの結果が得られます。

デバッグをオンにすると、これは確かに私が見ているものです(そして、いくつかの茎):

(+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は、そしてそれを理解するために同義語フィルターに設定されています。

役に立ちましたか?

解決

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

ドキュメントもこれを提案しています。http://wiki.apache.org/solr/analyzerstokenizerstokenfilters#solr.synonymfilterfactory

他のヒント

同義語の検索をよりよく理解するために、以下で実装のステップバイステッププロセスに従ってください(私は使用しています solr 6.5。*バージョン):

ステップ1:

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

: : solr-6.5.1 server solr yourcore conf

あなたのコア: それに応じてコアの名前を変更する必要があります

ステップ2:

フィールドタイプを追加します 管理系 上記の同じパスにファイル:

<fieldType name="country" class="solr.TextField" positionIncrementGap="100" sortMissingLast="true">
<analyzer>
  <tokenizer class="solr.KeywordTokenizerFactory"/>
  <filter class="solr.TrimFilterFactory"/>
  <filter class="solr.SynonymFilterFactory" expand="false" ignoreCase="true" synonyms="country-synonyms.txt" tokenizerFactory="solr.KeywordTokenizerFactory"/>
  <filter class="solr.LowerCaseFilterFactory"/>
</analyzer></fieldType>

ステップ3:タイプでフィールド(国籍)を追加します 同じファイル(マネージドシーマ)。

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

ステップ4:solrを再起動します。

solr restart -p <your solr port>

ステップ5:

次に、フィールドを含むデータをインポートします 国籍.***

ステップ6:

以下のケースとテストでクエリします。

クエリ:

  1. 国籍:私たち
  2. 国籍:アメリカ
  3. 国籍:米国
  4. 国籍:アメリカ合衆国

上記のクエリはすべて同じ結果をもたらします。

ノート:*** SOLR再起動を含む上記の手順を実行した後にのみデータをインポートします。既存のデータでは機能しない場合があります(詳細については、以下を参照してください。 Analyzerstokenizerstokenfilters)

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top