2

我正在通过 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.

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

4

1 回答 1

1

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

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

于 2012-01-30T19:40:59.413 回答