Solr通配符配置问题

时间:2012-12-19 13:09:33

标签: solr wildcard stemming

我可以配置solr来寻找像texteditor一样的人吗?

我有一个包含

的字段
... text texct blah Computer-Zeitalter blah text m00h ...

我已经像这样配置了

<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
    <analyzer>
        <tokenizer class="solr.WhitespaceTokenizerFactory" />
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt" />
        <filter class="solr.WordDelimiterFilterFactory" 
                generateWordParts="1" generateNumberParts="0" catenateWords="1"
                catenateNumbers="1" catenateAll="0" splitOnCaseChange="1"
                splitOnNumerics="0" stemEnglishPossessive="1"/>
        <filter class="solr.LowerCaseFilterFactory" />
        <filter class="solr.TrimFilterFactory" />   
        <filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt" />
        <filter class="solr.RemoveDuplicatesTokenFilterFactory" />
        <filter class="solr.ReversedWildcardFilterFactory" />
        <filter class="solr.LengthFilterFactory" min="2" max="100" />
    </analyzer>
</fieldType>

但是

select/?q=volltext:*eitalter&version=2.2&start=0&rows=10&indent=on
select/?q=volltext:eitalter&version=2.2&start=0&rows=10&indent=on

没有结果,为什么?

我正在使用solr 1.4

1 个答案:

答案 0 :(得分:2)

由于您使用EnglishPorterFilterFactory,它会从 Zeitalter 中删除“er”后缀,并将其编入 zeitalt 。所以,如果你想找到这个关键字,那么

  • 您应该将查询更改为...q=volltext:*eitalt&...
  • 或者您应该从字段定义中删除EnglishPorterFilterFactory并使用...q=volltext:*eitalter&...
  • 进行搜索