选择性地关闭弹性搜索中的停用词

时间:2013-12-17 16:40:31

标签: elasticsearch

所以我想关闭usernametitletags字段而不是description字段的停用字词过滤功能。

您可以想象我不想过滤掉名为the best的结果,但我确实希望阻止the影响分数,如果它位于description字段中(搜索如果你想要一个例子,请在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?,或者说文档提示我自己的分析器{{ 1}}。

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

1 个答案:

答案 0 :(得分: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 },
        }
      }
    }
  }