elasticsearch多个单词同义词不起作用

时间:2013-10-10 07:21:56

标签: elasticsearch synonym

我是elasticsearch的新手,我正在尝试配置同义词,但它没有按预期工作。

我的字段中有以下数据 1)Techincal Lead,模块负责人,软件工程师,高级软件工程师

我想如果我搜索tl然后它应该重新调整“技术主管”或“tl” 然而,它将返回“技术主管”和“模块主管”,因为铅在索引时被标记化。

请您帮我解决此问题的确切设置。

我已经看到索引时间和搜索时间标记化但无法理解。

synonyms.txt:

  

tl,TL =>技术主管

     

se,SE =>软件工程师

     

sse =>高级软件工程师

映射文件:

{
  "settings": {
    "index": {
      "analysis": {
        "analyzer": {
          "synonym": {
            "tokenizer": "whitespace",
            "filter": [
              "synonym"
            ]
          }
        },
        "filter": {
          "synonym": {
            "type": "synonym",
            "synonyms_path": "synonyms.txt"
          }
        }
      }
    }
  },
  "mappings": {
    "tweet": {
      "properties": {
        "Domain": {
          "type": "string",
          "analyzer": "synonym"
        },
        "Designation": {
          "analyzer": "synonym",
          "type": "string"
        },
        "City": {
          "type": "string",
          "analyzer": "synonym"
        }
      }
    }
  }
}

1 个答案:

答案 0 :(得分:0)

你的代币在这里是相同的,所以你把那部分放下了。您需要做的是确保您正在进行“与”匹配,而不是“或”,因为它似乎只是匹配任何单词而非全部。

查看您的令牌:

localhost:9200/test/_analyze?analyzer=synonym&text=technical lead
localhost:9200/test/_analyze?analyzer=synonym&text=tl

和查询

{
   "query": {
      "match": {
         "domain": {
            "query": "tl",
            "operator": "and"
         }
      }
   }
}

通常您希望搜索和索引分析器相同。但是,有许多先进的例子,这是不可取的。但是,在使用同义词的情况下,通常您不希望在启用扩展时在一个或另一个中使用同义词。      即tl,技术主管

但是,因为你正在使用=>同义词的类型,这无关紧要,因为所有单词都会被转换为右边的单词,而不是为逗号之间的每个单词创建一堆标记。

相关问题