你能说出我搜索结果为空的原因吗。
说,我在Solr中有以下文件:
{
"srcphrase": "in case if",
"id": "d77a6c9e463652c9",
"_version_": 1479240921712164900
}
在我的schema.xml中:
<field name="id"
type="string"
indexed="true"
stored="true"
required="true"
multiValued="false" />
<field name="srcphrase"
type="text_en"
indexed="true"
stored="true"/>
...
<fieldType name="text_en" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPossessiveFilterFactory"/>
<filter class="solr.KeywordMarkerFilterFactory" protected="protwords.txt"/>
<filter class="solr.PorterStemFilterFactory"/>
</analyzer>
</fieldType>
提交查询时localhost:8983 / solr / collection / select?q = srcphrase%3A%22in + case + if%22我得到空结果。以下是分析显示:
您是否有一些想法为什么我对现有短语的结果为空?
答案 0 :(得分:0)
现在看来问题已经解决了。我已经尝试重新索引文档,但在我再次重新索引核心之后,Solr开始返回结果。
查询:srcphrase:in AND srcphrase:case AND srcphrase:if
,找到短语
查询:srcphrase:"case if in"~3
,找到短语
查询:srcphrase:"in case if"
,找到短语
查询(由akshayb建议):srcphrase:in AND case AND if
,结果为空
如果更改索引分析器的过滤器链,那么重新索引文档很重要。 要重新索引文档,需要:
删除所有现有文件
curl http://{host}:{port}/solr/{collection}/update -H "Content-Type: text/xml" --data-binary '<delete><query>*:*</query></delete>'
再次提交文件,例如:
java -Durl=http://{host}:{port}/solr/{collection}/update -jar /path/to/solr/post.jar my-doc.txt