请注意:
本书基于 Elasticsearch 2.x 版本,有些内容可能已经过时。
本书基于 Elasticsearch 2.x 版本,有些内容可能已经过时。
使用同义词
edit使用同义词
edit同义词可以取代现有的语汇单元或 通过使用 同义词
语汇单元过滤器,添加到语汇单元流中:
PUT /my_index { "settings": { "analysis": { "filter": { "my_synonym_filter": { "type": "synonym", "synonyms": [ "british,english", "queen,monarch" ] } }, "analyzer": { "my_synonyms": { "tokenizer": "standard", "filter": [ "lowercase", "my_synonym_filter" ] } } } } }
首先,我们定义了一个 |
|
我们在 同义词格式 中讨论同义词格式。 |
|
然后我们创建了一个使用 |
同义词可以使用 synonym
参数来内嵌指定,或者必须 存在于集群每一个节点上的同义词文件中。
同义词文件路径由 synonyms_path
参数指定,应绝对或相对于 Elasticsearch config
目录。参照 更新停用词(Updating Stopwords) 的技巧,可以用来刷新的同义词列表。
通过 analyze
API 来测试我们的分析器,显示如下:
GET /my_index/_analyze?analyzer=my_synonyms Elizabeth is the English queen
这样的一个文件将匹配任何以下的查询: English queen
、British queen
、 English monarch
或 British monarch
。
即使是一个短语查询也将会工作,因为每个词项的位置已被保存。
在索引和搜索中使用相同的同义词语汇单元过滤器是多余的。 如果在索引的时候,我们用 english
和 british
这两个术语代替 English
,
然后在搜索的时候,我们只需要搜索这些词项中的一个。或者,如果在索引的时候我们不使用同义词,然后在搜索的时候,我们将需要把对 English
的查询转换为 english
或者 british
的查询。
是否在搜索或索引的时候做同义词扩展可能是一个困难的选择。我们将探索更多的选择 扩展或收缩。