如何使同义词在elasticsearch中具有模糊性?

3bygqnnd  于 2023-05-28  发布在  ElasticSearch
关注(0)|答案(1)|浏览(174)

我有一个synonyms.txt

auto, vehicle => car

在我的设置中:

{
  "analysis": {
    "analyzer": {
      "def_analyzer": {
        "tokenizer": "whitespace",
        "filter": ["lowercase", "synonym"]
      }
    },
    "filter": {
      "synonym": {
        "type": "synonym",
        "synonyms_path": "synonyms.txt"
      }
    }
  }
}

在文档中,我有一行的值为“car”
然后在查询中,我应用这个分析器和模糊性,并尝试使用同义词“vehicle”进行搜索,其中有一个小的错别字:

title: {
  query: 'vhicle',
  operator: 'OR',
  fuzziness: 'auto',
  analyzer: 'def_analyzer',
},

结果为0。尽管如果编辑查询以使用同义词“vehicle”,它将返回“car”。如果你写一些像“crr”的东西,它会找到“car”-所以模糊性不适用于这里的同义词出于某种原因。仅用于索引中的原始值。

q8l4jmvw

q8l4jmvw1#

search_analyzer可以帮助您解决此问题。您可以在Map中同时使用analyzersearch_analyzer

逻辑如下:

1.检查查询并添加模糊性

查询vhicle变为vehicle

2.检查同义词表

vehicle变为car

"mappings": {
    "properties": {
      "text": {
        "type": "text",
        "analyzer": "autocomplete", 
        "search_analyzer": "standard" 
      }
    }
  }

相关问题