Solr 如何选择fieldType过滤器(例如德语)

Solr 如何选择fieldType过滤器(例如德语),solr,Solr,我用德语为数据编制了索引,但结果不太好,所以我试图找到一种方法来改进搜索 模式非常简单: <fields> <field name="id" type="string" indexed="true" stored="true" required="true" /> <field name="title" type="text_de" indexed="true" stored="true" required="true"

我用德语为数据编制了索引,但结果不太好,所以我试图找到一种方法来改进搜索

模式非常简单:

<fields>
           <field name="id" type="string" indexed="true" stored="true" required="true" /> 
           <field name="title" type="text_de" indexed="true" stored="true" required="true" />
           <field name="_version_" type="long" indexed="true" stored="true" multiValued="false" />
        </fields>
标题由以下内容配置:

<fieldType name="text_de" class="solr.TextField" positionIncrementGap="100">
      <analyzer> 
        <tokenizer class="solr.StandardTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
        <filter class="solr.StopFilterFactory" ignoreCase="true" words="lang/stopwords_de.txt" format="snowball" enablePositionIncrements="true"/>
        <filter class="solr.GermanNormalizationFilterFactory"/>
        <filter class="solr.GermanLightStemFilterFactory"/>
        <!-- less aggressive: <filter class="solr.GermanMinimalStemFilterFactory"/> -->
        <!-- more aggressive: <filter class="solr.SnowballPorterFilterFactory" language="German2"/> -->
      </analyzer>
   </fieldType>
如果我选择不太激进或更激进的过滤器而不是德国LightstemFilterFactory,我如何决定要进行哪些改进

我可以在查询期间进行AB测试吗?一个查询告诉solr使用GermanMinimanstemFilterFactory,另一个查询使用SnowballPorterFilterFactory?
通过这种方式,我将能够知道哪种词干分析的性能更好。

您可以通过在索引中创建多个具有不同底层字段类型的字段来执行AB测试,这些字段实现了要测试的各个FilterFactory。您可以利用solr指令将标题字段复制到不同的字段中进行测试。

首先,您所说的结果不好是什么意思。你没有找到你要找的东西吗?排序/排名错误吗?有几种方法可以调整这一点

因为您提到了您的模式和配置,所以我假设单词与您希望它们匹配的方式不匹配

查找要开始的正确类型 我通常使用稍微不同的配置同时设置几个类型,并使用Solr Admin中的“分析”选项卡http://localhost:8080/solr//CORE/analysis. 然后我列出一些典型的句子和查询,并用不同的类型进行测试,看看会发生什么,以及它们是如何匹配的。 如果你已经有了一个应用程序,那就更容易了。从日志和重要或流行的标题中查找热门查询。对我来说,大多数时候“中等”和更具攻击性的词干分析器给出了非常相似的结果。但是,轻型茎秆切割机可以起到很大的作用。如果要匹配长而自然的文本,强词干分析器通常是一个很好的选择;如果要匹配特定的名称或产品,轻词干分析器可以提供更好的结果

其他过滤器 词干分析不是模式中唯一重要的事情。您似乎已经准备好了默认的停止字列表。确保调整该列表。索引中的停止词越少意味着得分越高。转到Solr Admin中的架构浏览器并选择标题字段。加载前100个术语信息。如果其中有任何无意义的词,请将这些词添加到停止词列表中,并重新编制索引。还要检查其他东西,如数字。这可能表明你的标记器需要调整并杀死那些标记器,除非它们对你很重要,但对我来说,一位数通常没有任何价值

A/B测试 如果你真的只有一个字段,我通常有不止一个字段,那么用不同的类型将数据从一个字段复制到另一个字段是一个简单的好方法。但是A/B测试仍然必须在应用程序中进行。比如说,你需要将10%的查询发送到其他领域,并监控你喜欢的转换项目、购买的产品或你衡量成功的方式


如果您的模式变得更复杂,请使用两个核心。我总是有我选择的核心是一个活的核心和一个糖果核心是一个挑战活的核心。该策略要求索引数据两次,将数据发送到core1和core2,每个core一次。但它允许你测试的不仅仅是场地类型,你还可以使用不同的得分等。同样,您需要找到一种方法来跟踪您的候选人核心的成功程度

好的,我现在就试试。除了词干过滤器,我还应该尝试和更改其他配置吗?