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/

相关文章:

elasticsearch - 在titan图的同一键上创建复合索引和混合索引

elasticsearch - Elasticsearch DSL过滤器,用于聚合和扩展统计信息

c - 在 C 中删除另一个字符串中出现的字符串(代码和错误消息)

arrays - 计算数组中出现的次数

python - 从数据框中提取共现数据

elasticsearch - 无论如何,在聚合之前是否要对索引进行排序

java - Spring Boot Elasticsearch 配置

ruby-on-rails-3 - elasticsearch/tyre如何正确返回默认记录集?

string - Bash:从字符第一次出现到第二次出现的子字符串

ios - 如何添加唯一值来区分 Swift 数组中的重复数据?