通过测试发现同义词配置是由效果的,找到了wa的两个同义词。
{
"responseHeader": {
"status": 0,
"QTime": 21,
"params": {
"q": "my_name:wa",
"debug": "true",
"indent": "true",
"wt": "json",
"_": "1506070525783"
}
},
"response": {
"numFound": 0,
"start": 0,
"docs": []
},
"debug": {
"rawquerystring": "my_name:wa",
"querystring": "my_name:wa",
"parsedquery": "(my_name:wangqiang my_name:王强)/no_coord",
"parsedquery_toString": "my_name:wangqiang my_name:王强",
"explain": {},
"QParser": "LuceneQParser",
"timing": {
"time": 21,
"prepare": {
"time": 18,
"query": {
"time": 18
},
"facet": {
"time": 0
},
"facet_module": {
"time": 0
},
"mlt": {
"time": 0
},
"highlight": {
"time": 0
},
"stats": {
"time": 0
},
"expand": {
"time": 0
},
"debug": {
"time": 0
}
},
"process": {
"time": 1,
"query": {
"time": 0
},
"facet": {
"time": 0
},
"facet_module": {
"time": 0
},
"mlt": {
"time": 0
},
"highlight": {
"time": 0
},
"stats": {
"time": 0
},
"expand": {
"time": 0
},
"debug": {
"time": 1
}
}
}
}
}
通过debug发现,同义词的配置也有效果,通过parsedquery_toString
字段的值能够发现,wa已经转换为同义词,但是搜索结果什么都没有。
把parsedquery_toString
字段的值直接进行搜索,结果是正确的
{
"responseHeader": {
"status": 0,
"QTime": 75,
"params": {
"q": "my_name:wangqiang my_name:王强",
"indent": "true",
"wt": "json",
"_": "1506070781482"
}
},
"response": {
"numFound": 2,
"start": 0,
"docs": [
{
"id": "13",
"my_name": "王强",
"_version_": 1579146583993221000
},
{
"id": "121",
"my_name": "王强",
"_version_": 1579151020009717800
}
]
}
}
字段的配置如下:
<fieldType name="text_smartcn" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="org.apache.lucene.analysis.cn.smart.HMMChineseTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
</analyzer>
</fieldType>
使用的是5.5.3版本中自带的中文分词器,ik也试过,同样的问题
之前写的不对。。
我基本采用同样的配置效果如图
我也不知道你那块出了问题,你

Field Value (Index)
那块输入值分析一下,看看问题出来没,具体想看我的那块的配置,我都可以给你