2017-06-21 6 views
0

検索に同義語を使用したい。 私はschema.xmlに「同義語」を定義しました。Solr 6.5.1 - プログラムで類義語を管理する

<fieldType name="foo" class="solr.TextField" positionIncrementGap="100"> 
    <analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory" /> 
    <filter class="solr.ManagedSynonymFilterFactory" managed="german" /> 
    <!--<filter class="solr.SynonymGraphFilterFactory" ignoreCase="true" expand="true" managed="german" />--> 
    <filter class="solr.LowerCaseFilterFactory"/> 
    </analyzer> 
</fieldType> 

このFIELDTYPEは、フィールドで使用されます。

<field name="test" type="foo" required="true" /> 

私は、を介して更新同義語を保つことができる今、私はこのように、APIを介してSolrの(6.5.1)に同義語を追加していウェブバックエンド、例えば

curl -X PUT -H 'Content-type:application/json' --data-binary '["mad","angry","insane"]}' "http://localhost:8983/solr/core/schema/analysis/synonyms/german" 

これはかなりクールで、予想通りに機能します。 私はそれらを見抜くことができます。彼らは仕事の前に

http://localhost:8983/solr/core/schema/analysis/synonyms/german

私の問題は、これはインデックスの再作成を必要とすることで、私は問合せ時間の代わりに、インデックスタイムを使用していていても。

インデックスを再作成せずに同義語を「オンザフライ」で管理することは可能ですか?

私の印象は、質問時間を使用している限りですが、これは私の仕事ではないので、何か間違っていたと思いますか?

これを実現するには、APIに対してsynonyms.txtを使用する必要がありますか?

しかし、テキストファイルは同義語を維持するためのAPIほど簡単ではないでしょうか?

読書とよろしく

答えて

1

をありがとうドキュメントhttps://cwiki.apache.org/confluence/display/solr/Managed+Resources#ManagedResources-ApplyingChangesで説明したように:

このREST APIを介して管理対象リソースに加えた変更は、Solrのコレクションまで アクティブSolrのコンポーネントには適用されません(またはシングルサーバモードの のSolrコア)がリロードされます。

したがって、クエリ時に新しい同義語を表示するためにデータを再インデックスする必要はありません。 https://cwiki.apache.org/confluence/display/solr/CoreAdmin+API#CoreAdminAPI-RELOADまたはhttps://cwiki.apache.org/confluence/display/solr/Collections+API#CollectionsAPI-RELOAD:ReloadaCollection

コアをリロードする必要があります。ソルバー設定ですべてのコアをリロードする必要があります。 2つのコアがあり、1つだけをリロードすると、リロードされた1つのコアでのみ変更が表示されます。

関連する問題