Solr:ClassicFilterFactory with acronyms&使用Solr分析仪

时间:2014-04-02 13:26:11

标签: search solr lucene tokenize

我有一个带有文本类型的schema.xml,它在索引时使用标记器,过滤器......在查询时使用其他文件。现在我遇到了一个问题,一个应该返回一些结果的搜索查询并没有返回任何内容。所以我想,使用Solr的分析仪会让我更接近问题的根源。

我有以下字符串:Foo Bar Ges.m.b.H

这是字段类型text的的schema.xml定义:

<fieldType name="text" class="solr.TextField" omitNorms="false" autoGeneratePhraseQueries="true">
  <analyzer type="index">
    <tokenizer class="solr.ClassicTokenizerFactory"/>
    <filter class="solr.ClassicFilterFactory"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.WordDelimiterFilterFactory" catenateWords="1" catenateAll="1" preserveOriginal="1"/>
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="30"/>
    <filter class="solr.ReverseStringFilterFactory" />
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="30"/>
    <filter class="solr.ReverseStringFilterFactory" />
  </analyzer>
  <analyzer type="query">
    <tokenizer class="solr.ClassicTokenizerFactory"/>
    <filter class="solr.ClassicFilterFactory"/>
    <filter class="solr.StandardFilterFactory"/>
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.WordDelimiterFilterFactory" catenateWords="2" catenateAll="1" preserveOriginal="1" splitOnNumerics="0"/>
  </analyzer>
</fieldType>

当我搜索Foo Bar时,我得到了所有结果,因此问题出在Ges.m.b.H.内(注意结尾处缺少的点)。我对此有几个问题:

1。 ClassicFilterFactory

ClassicFilterFactory仅适用于格式为LETTER.LETTER.LETTER.的首字母缩略词。例如,G.m.b.H. -> GmbH。但它并不适用于G.m.b.H(末尾缺少点)或Ges.m.b.H.Ges.m.b.H等首字母缩略词。有没有办法让这个工作?现在,我正在使用WordDelimiterFilterFactory进行此操作,但如果有更好的方法,最好知道。

2。 Solr的Analzer

我尝试使用solr的分析器分析索引和查询时间。正如预期的那样,我的文本在索引和查询时间上被分开了。当我填写索引和查询字段时,如果有匹配,我会看到这个突出显示的字段。以下是一些截图:

Index time, LowerCaseFilterFactory

上面的屏幕截图来自Foo Bar Ges.m.b.HLowerCaseFilterFactory的索引时间。我也得到了#34; hits&#34;在其他过滤器上,例如我的上次过滤器ReverseStringFilterFactory

Index time, ReverseStringFilterFactory

下一个屏幕截图来自查询时间:

Query Time

对我来说,看起来,Solr正在查看我的查询标记器/过滤器内容的最后一行,并在索引文档中搜索命中,如果有一些命中,则会突出显示。但不幸的是,此搜索在我的正常搜索中使用时不会返回任何匹配

我钻了下来以排除任何其他疑问:

http://localhost:8982/solr/atalanda_development/select?q=foo+bar+ges.m.b.h&defType=edismax&qf=vendor_name_search_text

总结:

  1. 任何想法,为什么这不起作用?
  2. 我是对的,突出的,有点紫色的田地,是命中?有人可以解释一下,Solr是如何做到这一点的,以便将来我能理解这一点?
  3. ClassicFilterFactory问题的任何建议都会很棒!

0 个答案:

没有答案