【问题标题】:Adjust words position with stopword filter使用停用词过滤器调整单词位置
【发布时间】:2018-02-17 14:22:18
【问题描述】:

Elasticsearch 的停用词过滤器维护单词位置:https://www.elastic.co/guide/en/elasticsearch/guide/current/using-stopwords.html#maintaining-positions

例如这里是我的分析器:

"myAnalyzer": {
    "tokenizer": "standard",
    "filter": ["asciifolding", "french_elision", "lowercase", "french_stop", "french_stemmer"]
}

这里是我的字符串的分析:

curl -XGET 'localhost:9200/_analyze?pretty=true' -d '{"analyzer": "myAnalyzer", "text": "instruments de musique"}'
Index 339 documents...
{
  "tokens" : [ {
    "token" : "instrument",
    "start_offset" : 0,
    "end_offset" : 11,
    "type" : "<ALPHANUM>",
    "position" : 0
  }, {
    "token" : "musiqu",
    "start_offset" : 15,
    "end_offset" : 22,
    "type" : "<ALPHANUM>",
    "position" : 2
  } ]
}

有没有办法调整位置,让“音乐”这个词出现在位置 1 而不是 2?

我的问题来自阶段查询。

【问题讨论】:

  • 如果您将 instrument 设为停用词,是的,但不确定您为什么要这样做?
  • 因为在短语查询中我希望能够搜索“instrument de musique”(“de”是停用词)或“instrument musique”,但由于位置原因,它不起作用。如果可能的话,我不想玩短语查询的“slop”参数。
  • 你试过删除停用词过滤器吗?
  • 还可以查看此内容以更有效地执行此操作elastic.co/guide/en/elasticsearch/guide/current/…

标签: elasticsearch


【解决方案1】:

您可以尝试将 query_string 与 enable_position_increments:false 一起使用 类似的东西

{  "query_string":{
    "default_field":"text",
    "query":"\"instruments de musique\"",
    "enable_position_increments":false
  }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-02
    • 1970-01-01
    • 2022-12-15
    相关资源
    最近更新 更多