Solr通配符配置问题

标签 solr wildcard stemming

嗨,我可以配置 solr 来像文本编辑器一样查找所有内容吗?

我有一个包含

的字段
... 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

最佳答案

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

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

关于Solr通配符配置问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13953146/

相关文章:

tomcat - 紧急求救 : my SOLR prod server is crashing every 30 minutes

用于检测来自特定域的任何通配符 url 的 Javascript(例如 : google)

azure - Azure 上的 Apache Solr

java - 使用 Zookeeper 主机字符串对 Solr Cloud 进行身份验证

mysql - 不搜索字段和进行 %""% 搜索之间的区别

elasticsearch - Elasticsearch Minhash前缀查询带有通配符?

java - 在 Lucene 4.4.0 中搜索词干和精确词

solr - 使用词干提取时如何基于 rawquerystring 提升 solr 结果

r - R 中的词干提取

mysql - 无法让 DataImportHandler 在 Tomcat 中为 Solr 工作