在elasticsearch中搜索同义词

时间:2014-02-10 00:00:28

标签: elasticsearch

我正在尝试使用ES中索引的语言创建同义词搜索。

例如,

索引文档 - >名称:德语

同义词:德语,德语,XYZ

我想要的是,当我输入德语或德语或XYZ时,ES会给我德语...

这可能吗?

1 个答案:

答案 0 :(得分:0)

是非常的。 ElasticSearch非常好地处理同义词。以下是我在群集中配置同义词的示例 -

curl -XPOST localhost:9200/**new-index** -d '{
"settings": {
"number_of_shards": 2,
"number_of_replicas": 0,
"analysis": {
  "filter": {
    "synonym": {
      "type": "synonym",
      "synonyms_path": "synonyms/synonyms.txt"
    }
  },
  "analyzer": {
    "synonym": {
      "tokenizer": "lowercase",
      "filter": [
        "synonym"
      ]
    }
  }
 }
},
"mappings": {
"**new-type**": {
  "_all": {
    "enabled": false
  },
  "properties": {
    "Title": {
      "type": "multi_field",
      "store": "yes",
      "fields": {
        "Title": {
          "type": "string",
          "analyzer": "synonym"
         }
        }
      }
    }
  }
 }
}'

同义词文件的路径在同义词文件夹的 config 文件夹中查找并找到文本文件。对于您的要求,synonyms.txt的内容示例将是 -

German,Deutsch,XYZ

记住 - 如果您在索引时有一个小写过滤器,则同义词必须为小写。如果不工作则重新启动节点