【问题标题】:Solr WordDelimiterFilterFactory and Period CharactersSolr WordDelimiterFilterFactory 和句点字符
【发布时间】:2012-01-30 18:11:01
【问题描述】:

我正在通过 sunspot_rails v1.2 gem 使用 solr。

在我的 schema.xml 文件中,我有以下内容:

<fieldType name="text" class="solr.TextField" omitNorms="false">
  <analyzer type="index">
    <tokenizer class="solr.StandardTokenizerFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.PorterStemFilterFactory"/>
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" catenateWords="1" preserveOriginal="1"/>
    <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.PorterStemFilterFactory"/>
    <filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" preserveOriginal="1"/>
  </analyzer>
</fieldType>

如果我索引字符串firstname.lastname@example.com,如果我搜索example.com,我可以找到它,但如果我搜索firstname.lastname,则找不到。

如果我从查询设置中删除WordDelimiterFilterFactory,那么我可以通过搜索firstname.lastname 来发送电子邮件;但是,当我搜索 example.com 时,什么也没有出现。

如何修改配置文件,以便能够通过这两种方式进行搜索?

【问题讨论】:

  • 注意:我发现了主要问题。显然,列出过滤器的顺序很重要。我在LowerCaseFilterFactory 之后应用了WordDelimiterFilterFactory,因此索引了一些大写的单词。

标签: solr lucene sunspot sunspot-rails


【解决方案1】:

您可以使用Solr Admin Analysis Page 调试当前索引和查询分析配置如何影响您的搜索,另一种选择是使用Luke 查看Lucene 索引。

但是,您可以探索另一种选择。由于电子邮件和 URL 需要以特定方式处理,Lucene 有一个 StandardTokenizer 的变体,专门处理电子邮件和 URL Lucene Email/URL Tokenizer 对应的 Solr Email/URL Tokenizer Factory

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-22
    • 2016-02-16
    相关资源
    最近更新 更多