【问题标题】:Selectively turn off stop words in Elastic Search选择性地关闭 Elastic Search 中的停用词
【发布时间】:2014-01-05 13:06:54
【问题描述】:

所以我想关闭 usernametitletags 字段上的停用词过滤,但不关闭 description 字段。

您可以想象,我不想过滤掉一个名为 the best 的结果,但如果它位于 description 字段中,我确实想阻止 the 影响分数(如果在 GitHub 上搜索 the你想要一个例子)。

现在@Javanna 说(Is there a way to "escape" ElasticSearch stop words?):

在您的情况下,我会禁用该特定字段的停用词,而不是修改停用词列表,但如果您愿意,您也可以这样做。

未能提供示例,因此我四处搜索并尝试了 common 查询:http://www.elasticsearch.org/blog/stop-stopping-stop-words-a-look-at-common-terms-query/,这对我也不起作用。

所以我搜索了专门停止过滤停用词的方法,但我找到的最接近的方法是在索引范围内停止它:Can I customize Elastic Search to use my own Stop Word list? 通过直接攻击分析器,或者没有文档提示制作我自己的分析器:/

有选择地禁用某些字段的停用词的最佳方法是什么?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    我想您已经知道该怎么做,即针对某些字段自定义分析器。据我了解,您没有设法为此创建有效的语法示例。这是我们在一个项目中使用的,我希望这个例子能给你指明正确的方向:

      {
        :settings => {
          :analysis => {
            :analyzer => {
              :analyzer_umlauts => {
                :tokenizer    => "standard",
                :char_filter  => ["filter_umlaut_mapping"],
                :filter       => ["standard", "lowercase"],
              }
            },
            :char_filter => {
              :filter_umlaut_mapping => {
                :type => 'mapping',
                :mappings_path => es_config_file("char_mapping")
              }
            }
          }
        },
        :mappings => {
          :company => {
            :properties => {
              [...]
              :postal_city => { :type => "string",  :analyzer => "analyzer_umlauts", :omit_norms => true, :omit_term_freq_and_positions => true, :include_in_all => false },
            }
          }
        }
      }
    

    【讨论】:

    • 真好我明天回来测试它并标记它谢谢:)
    猜你喜欢
    • 1970-01-01
    • 2015-02-07
    • 2014-04-11
    • 1970-01-01
    • 2018-11-27
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 2020-12-20
    相关资源
    最近更新 更多