Solr搜索带有空格或没有区分大小写和精确匹配的查询

时间:2013-07-17 13:45:53

标签: solr

我正在实施搜索产品的solr,但在某些情况下它不起作用。 例如:

  

productcode = 030101 01

在schema.xml中使用

<fieldtype name="string"  class="solr.StrField" sortMissingLast="true" omitNorms="true"/> 

<field name="itemcode" type="string" indexed="true" stored="true" required="true"/>

如果我改变了fieldtype即

<fieldType name="text_ws" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.ReversedWildcardFilterFactory" withOriginal="true"
                maxPosAsterisk="2" maxPosQuestion="1" minTrailing="2" maxFractionAsterisk="0"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
        <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>

 <field name="itemcode" type="text_ws" indexed="true" stored="true" required="true"/>

然后搜索productcode = 030101 01但它也在搜索

030101 02
030101 03
030101 04

现在确切搜索不起作用。因为我有一些具有小写和大写字符的产品代码,所以它也会在搜索中产生问题。

提前感谢您的时间。 阿苏

1 个答案:

答案 0 :(得分:0)

如果你只需要小写&amp;精确搜索,你可以删除'WhitespaceTokenizerFactory'和&amp;索引期间的'ReversedWildcardFilterFactory'查询fieldType = text_ws?

另请参阅“solr.KeywordTokenizerFactory”