太阳黑子Solr电子邮件搜索rails

时间:2014-11-07 03:16:06

标签: ruby-on-rails solr sunspot

我正在使用使用solr的太阳黑子宝石。我已经苦苦挣扎了几天,现在试图让我的用例用于搜索一个字段。

我的桌子上有一个“电子邮件”栏目。我所要做的就是让它返回子串匹配以及完整匹配。

例如给出电子邮件:

bob@gmail.com

我希望能够将其与以下所有内容相匹配:

  • 鲍勃
  • b @克
  • 的Gmail
  • gmail.com
  • .COM
  • bob@gmail.com

基本上应该返回任何匹配的3个字符。

我遇到的问题是完全匹配不适用于默认配置。 “bob@gmail.com”不会返回任何结果,因为它在@符号处分割并搜索bob gmail.com但找不到它。

如果我搜索gmail.com等它会起作用。或者,如果我搜索bob,它也会起作用。

所以我已经尝试过六次在类似帖子中找到的建议,并且已经有一些建议可以完全匹配,但部分匹配不再有效。

以下是我现在在schema.xml中的内容

<fieldType name="text" class="solr.TextField" omitNorms="false">
  <analyzer>
    <tokenizer class="solr.UAX29URLEmailTokenizerFactory"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.NGramFilterFactory" minGramSize="3" maxGramSize="40"/>
  </analyzer>

  <analyzer type="query">
    <tokenizer class="solr.UAX29URLEmailTokenizerFactory"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.NGramFilterFactory" minGramSize="3" maxGramSize="40"/>
  </analyzer>
</fieldType>

我正在使用solr.UAX29URLEmailTokenizerFactory tokenizer来匹配电子邮件地址,因为@符号是个问题。我也尝试过简单地在我的搜索中转义@符号(bob \ @gmail.com)并尝试双引号(“bob@gmail.com”),但这些都没有。因此,我必须匹配完整电子邮件的唯一两个标记器是UAX29URLEmailTokenizerFactory和KeyWordTokenizer,但它们都会破坏部分匹配。

这是我第一次尝试使用solr,所以跟我说话,就像我一无所知:)

谢谢!

0 个答案:

没有答案