Solr - WhiteSpaceTokenizerFactory适用于索引,但不适用于查询

时间:2013-12-04 04:42:23

标签: search solr lucene search-engine tokenize

考虑以下架构,

<schema>

<types>
    <fieldType name="string" class="solr.StrField" sortMissingLast="true" omitNorms="true" multiValued="false"/>
    <fieldType name="stop_analyzer_string" class="solr.TextField" multiValued="false">
       <analyzer type="index">
          <tokenizer class="solr.WhitespaceTokenizerFactory"/>
          <filter class="solr.LowerCaseFilterFactory"/>
          <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
          <filter class="solr.EdgeNGramFilterFactory" minGramSize="3" maxGramSize="50" side="front"/>
      </analyzer>
     <analyzer type="query">
       <tokenizer class="solr.WhitespaceTokenizerFactory"/>
       <filter class="solr.LowerCaseFilterFactory"/>
       <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
    </analyzer>
   </fieldType>
</types>

<fields>
   <field name="name_search" type="stop_analyzer_string" indexed="true" stored="false"/>
   <copyField source="name" dest="name_search"/>
   <field name="name" type="string" indexed="true" stored="true"/>
</fields>

</schema>

name字段使用WhitespaceTokenizerFactory索引,但在使用name字段查询时似乎没有使用WhitespaceTokenizerFactory。

对于名称为“solr search”的文档,
查询name_search:solr - 匹配文档。 //索引时间WhiteSpace tokenizer的工作原理 查询name_search:search - 匹配文档。 //索引时间WhiteSpace tokenizer的工作原理 但查询name_search:solr search - 与文档不匹配。 //查询时间WhiteSpace tokenizer不起作用

但是如模式中所指定的那样,查询也应该用空格标记化并与文档匹配。没有?

1 个答案:

答案 0 :(得分:0)

不确定您缺少什么,但上述所有查询都适用于我提到的数据。

http://localhost:8983/solr/collection1/select?q=name_search%3Asolr+search&wt=xml&indent=true

我索引的上述返回结果文档。

试试这个:

http://localhost:8983/solr/#/collection1/documents

得到: 然后将文档粘贴到文档部分,然后点击提交文档

{"id":"100001","name_search":"solr search"}

运行查询为:

http://localhost:8983/solr/collection1/select?q=name_search%3Asolr+search&wt=json&indent=true