我是索尔的新手。我在schema.xml文件中启用了ManagedSynonymFilterFactory,如下所示
<fieldType name="managed_en" class="solr.TextField" positionIncrementGap="100">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.ManagedStopFilterFactory" managed="english" />
<filter class="solr.ManagedSynonymFilterFactory" managed="english" />
</analyzer>
</fieldType>
现在我正试图点击http://localhost:8983/solr/testcore/schema/analysis/synonyms/english iam得到回应
{ "responseHeader":{
"status":0,
"QTime":2},"synonymMappings":{
"initArgs":{"ignoreCase":false},
"initializedOn":"2016-09-17T05:40:31.245Z",
"managedMap":{}}}
虽然我在synonyms.txt文件中定义了同义词。当我搜索同义词时,我正确地从Solr获得结果。但不确定为什么我在托管地图中变空。
P.S:使用Solr 5.4.1
答案 0 :(得分:1)
当您在synonym.txt中定义单词时,它将由SynonymFilterFactory使用,而不是由ManagedSynonymFilterFactory使用。
<filter class="solr.SynonymFilterFactory" expand="true" synonyms="synonyms.txt" ignoreCase="true"/>
您获得正确结果的原因是因为您使用SynonymFilterFactory而不是ManagedSynonymFilterFactory执行搜索的solr字段。
要向ManagedSynonymFilterFactory添加单词,您需要使用Solr Managed Resources REST API。 要添加新的同义词映射,您可以PUT / POST单个映射,例如:
curl -X PUT -H 'Content-type:application/json' --data-binary
'{"mad":["angry","upset"]}'
"http://localhost:8983/solr/techproducts/schema/analysis/synonyms/english"
了解更多信息 https://cwiki.apache.org/confluence/display/solr/Managed+Resources