一、同义词简介
在我们的很多情况下,我们希望在搜索时,有时能够使用一个词的同义词来进行搜索,这样我们能搜索出来更多相关的内容。我们可以通过 text analysis 来帮助我们形成同义词。文本分析通常应用于你建立索引时的所有文档以及发送给 Elasticsearch 的所有查询。在进行同义词搜索时,我们有如下的几种方案:
在建立索引时 (indexing),通过 analyzer 建立 synonyms 的反向索引 (inverted index)
在 query 时,通过 search analyzer 对查询的词建立 synonyms
在 indexing 及 query 时,同时建立反向索引中的 synonym 及在 query 时为查询的词建立 synonyms
那么在实际的使用中,我们到底是用上述的哪种方案呢?在下面的例子中,你将看到在 query 时使用 synonym 会更加灵活,并且更容易让我们更新同义词的名单已经更好地支持 multi-word synonyms。
在今天的文章中,我们将讨论第一种,也是我们目前使用的方案,因为一来对线上已有的索引数据改动为0,而来比较灵活,可以频繁更改同义词词典。
二、实践
首先说明一下版本是elasticsearch 5.4.1
2.1 创建同义词 anaylzer 及 mapping
PUT myindex
{