elasticsearch - ElasticSearch Analyzer:有没有办法删除索引中出现的相同单词?

标签 elasticsearch find-occurrences

我正在使用带有自定义索引和搜索分析器的ElasticSearch。
我正在查询用户数据,有时在字符串中也有相同的情况。

示例:“Hello World,您好,先生!”在这里您可以看到2次“Hello”。

如果我正在搜索“Hello World”,则“Hello World Hello Mr!”会得到更好的分数。而不是“Hello World”。我不希望这种行为,即使这是合乎逻辑的。

因此,是否可以在建立索引时删除出现的相同单词?示例:“Hello World,您好,先生!” =>“世界您好先生!”

我当前的映射和设置:

  settings index: { number_of_shards: 1, number_of_replicas: 1 }, analysis: {
    analyzer: {
      custom_analyzer: {
        tokenizer: "custom_tokenizer",
        filter: ["lowercase", "asciifolding", "custom_spliter"]
      }
    },
    filter: {
      custom_spliter: {
        type: "word_delimiter",
        preserve_original: "true"
      }
    },
    tokenizer: {
      custom_tokenizer: {
        type: "nGram",
        min_gram: "3",
        max_gram: "3",
        token_chars: [ "letter", "digit" ]
      }
    }
  } do
    mappings dynamic: 'false' do
      indexes :searchable, analyzer: "custom_analyzer"
    end
  end

是否可以这样做?

最佳答案

您可以将unique token filter 添加到分析器中以实现此目的。
它允许进行配置,以便您可以删除出现在相同位置(例如:同义词)或任何位置的重复 token 。

关于elasticsearch - ElasticSearch Analyzer:有没有办法删除索引中出现的相同单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36603488/

相关文章:

algorithm - 按出现频率的顺序打印列表唯一项目

elasticsearch - ElasticSearch:在NEST中的用户提供的查询上应用过滤器

elasticsearch - ElasticSearch-在一系列日期之间进行搜索以进行比较

elasticsearch - 弹性观察者电子邮件中的日期数学

elasticsearch - ElasticSearch总结嵌套对象字段

python-3.x - python 3.4 计算 .txt 文件中的出现次数

c++ - 使用hashmaps查找最常见的单词C++

elasticsearch - 如何生成多词搜索建议

notepad++ - 在Notepad++中进行智能突出显示时显示出现次数