2017-06-21 56 views
0

我想爲我的搜索使用同義詞。 所以我定義了一個'同義詞'fieldType in schema.xmlSolr 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> 

字段類型所使用的字段:

<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 synony.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-RELOADhttps://cwiki.apache.org/confluence/display/solr/Collections+API#CollectionsAPI-RELOAD:ReloadaCollectionhttps://cwiki.apache.org/confluence/display/solr/Collections+API#CollectionsAPI-RELOAD:ReloadaCollection

重新加載核心請注意,您應該重新加載solr設置中的所有核心。如果您有兩個內核並僅重新加載一個內核,則只會在一個重新加載的內核上看到更改。