【发布时间】: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