【问题标题】:Using different language stop words in Solr在 Solr 中使用不同的语言停用词
【发布时间】:2021-05-15 02:53:06
【问题描述】:

Solr 在托管架构中为不同语言(如英语、法语、日语等)提供了一些现成的数据类型。

我们使用通用数据类型“text_general”进行字段声明,并使用 stopwards.txt 进行停用词过滤。

    <analyzer type="index">
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
      <filter class="solr.LowerCaseFilterFactory"/>
      <filter class="solr.EdgeNGramFilterFactory" maxGramSize="20" minGramSize="1"/>
    </analyzer>
    <analyzer type="query">
      <tokenizer class="solr.StandardTokenizerFactory"/>
      <filter class="solr.StopFilterFactory" words="stopwords.txt" ignoreCase="true"/>
      <filter class="solr.SynonymGraphFilterFactory" expand="true" ignoreCase="true" synonyms="synonyms.txt"/>
      <filter class="solr.LowerCaseFilterFactory"/>
    </analyzer>
  </fieldType>

在将数据同步到 Solr 核心时,我们会在诸如法语、英语、德语 etch 等字段中导入不同语言的文本。

我的问题是我们应该在同一个“stopwards.txt”文件中使用所有不同的语言停用词还是 solr 如何使用不同的语言停用词?

【问题讨论】:

  • 您需要使用相关设置定义特定于每种语言的字段 - 您可能也不希望将相同的同义词应用于每种语言;停用词也是如此。在某些情况下,您可能还需要特定于语言的词干。定义fieldname_enfieldname_jp
  • 在标准的 Solr 安装中,已经定义了特定于语言的字段(例如 text_en 和 text_cjk),并且每个字段都使用不同的分析器、停用词和同义词,您可以通过 curl http://your-solr/solr/your-core/schema/fieldtypes/text_cjk 和 @ 看到这一点987654325@

标签: solr solrnet


【解决方案1】:

不要删除停用词。停用词删除是 1970 年代 32 位机器遗留下来的一种磁盘空间节省技巧。

我从未删除停用词,25 年前我开始在 Infoseek 从事搜索工作(没有删除停用词)。

从索引中删除它们会使某些查询变得不可能,例如“维生素 a”。当我在 Netflix 构建搜索时,我不小心配置了停用词删除,并发现了一整套 100% 停用词的电影标题。该列表在这篇博文中。

https://observer.wunderwood.org/2007/05/31/do-all-stopword-queries-matter/

像 Solr 这样的 tf.idf 系统中的“idf”分数与停用词的作用相同,但更好。它根据这个特定集合的统计数据给常用词一个较低的分数。

不要删除停用词。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-17
    • 2015-09-08
    • 1970-01-01
    • 1970-01-01
    • 2016-10-17
    • 2012-06-29
    相关资源
    最近更新 更多