是的,您可以使用同义词和模糊匹配来进行建议。通过在语言分析器中添加同义词过滤器并将该过滤器添加到分析器中来处理同义词。然后,在为要用于建议的字段创建字段映射时,将该分析器分配给该字段即可。
至于模糊匹配,它发生在查询时。大多数基于文本的查询都支持
fuzziness
选项,允许您指定要允许多少个更正。默认的
auto
值会根据术语的长度调整更正次数,因此通常最好使用该值。
概念分析设置(
synonym_graph reference)
{
"analysis": {
"filter": {
"synonyms": {
"type": "synonym_graph",
"expand": "false",
"synonyms": [
"ar => audio record"
]
}
},
"analyzer": {
"synonyms": {
"tokenizer": "standard",
"type": "custom",
"filter": [
"standard",
"lowercase",
"synonyms"
]
}
}
}
}
记忆映射字段 (分析器 + 映射参考)
(注意,分析器的名称与上面定义的分析器名称匹配)
{
"properties": {
"suggestion": {
"type": "text",
"analyzer": "synonyms"
}
}
}
概念性查询
{
"query": {
"match": {
"suggestion": {
"query": "replce ar",
"fuzziness": "auto",
"operator": "and"
}
}
}
}
请记住,有几种不同的
建议选项,因此根据您使用的选项,您可能需要调整字段映射的方式,甚至向分析器添加另一个令牌过滤器。但是,分析器只是由一系列令牌过滤器组成,因此您通常可以组合所需的任何令牌过滤器以实现目标。只需确保您了解每个过滤器正在执行的操作,以便正确排序过滤器。
如果在此过程的某个部分遇到困难,请提交另一个问题,说明您遇到的具体问题。祝你好运!