Solr停用词不支持通配符搜索

时间:2016-06-23 10:37:31

标签: indexing solr lucene stop-words solrconfig

我遇到了solr通配符搜索和停用词的问题。我添加了几个停用词"到","用于" "是"在stopwords.txt中。当我没有进行通配符搜索时,它的工作正常 查询 - > q=learningObjectTopic:to&rows=1

<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">3</int>
<lst name="params">
<str name="q">learningObjectTopic:to</str>
<str name="rows">1</str>
</lst>
</lst>
<result name="response" numFound="0" start="0"/>
</response>

当我进行通配符搜索其返回的数据时 查询 - &gt; q=learningObjectTopic:*to*&rows=1

<response>
<lst name="responseHeader">
<int name="status">0</int>
<int name="QTime">5</int>
<lst name="params">
<str name="q">learningObjectTopic:*to*</str>
<str name="rows">1</str>
</lst>
</lst>
<result name="response" numFound="75" start="0">
<doc>
<str name="id">56f4bc54b2de79277297dcab</str>
<str name="learningObjectId">LO1_SK1_18</str>
<str name="learningObjectTopic">Introduction to Web Development</str>
<str name="category">learningObject</str>
<long name="_version_">1537824533459763200</long>
</doc>
</result>
</response>

这是我的分析器

<fieldType name="text_general" class="solr.TextField" multiValued="false" positionIncrementGap="100">
    <analyzer type="index">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <filter class="solr.LowerCaseFilterFactory"/>
 </analyzer>

我需要的是,&#34;到&#34;也不应该在通配符查询中匹配。我在这里缺少什么?

注意:learningObjectTopic:搜索跳过&#34;到&#34;当我添加&#34;到&#34;结果中的单词在停用词中,所以停用词索引正在起作用。

1 个答案:

答案 0 :(得分:0)

Solr StopFilterFactory不是一个多术语识别组件,因此stopFilterFactory不适用于通配符查询。Reference link

而且,情景可能不是有效的。因为,如果索引中有关键字“东京”,则搜索关键字“to *”应返回此结果,而不是显示“0”结果,这是不正确的