Solr:文档存在时清空结果

时间:2014-09-15 09:35:01

标签: solr

你能说出我搜索结果为空的原因吗。

说,我在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我得到空结果。以下是分析显示:

enter image description here

您是否有一些想法为什么我对现有短语的结果为空?

1 个答案:

答案 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,结果为空

如果更改索引分析器的过滤器链,那么重新索引文档很重要。 要重新索引文档,需要:

  1. 删除所有现有文件

    curl http://{host}:{port}/solr/{collection}/update -H "Content-Type: text/xml" --data-binary '<delete><query>*:*</query></delete>'
    
  2. 再次提交文件,例如:

    java -Durl=http://{host}:{port}/solr/{collection}/update -jar /path/to/solr/post.jar my-doc.txt