栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Elasticsearch完成建议使用多词输入进行搜索

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Elasticsearch完成建议使用多词输入进行搜索

完成建议器是前缀建议器,这意味着它会尝试将您的查询与输入的前几个字符进行匹配。如果要发布的文档与文本“
dog”匹配,则需要指定“ dog”作为输入。

PUT /test_index/item/1{   "test_suggest": {      "input": [         "cat dog",         "elephant",         "dog"      ]   }}

以我的经验,必须指定输入以进行匹配的局限性使得完成建议者的作用不如其他实现前缀匹配的方式有用。为此,我喜欢边缘ngram。我最近写了一篇有关使用ngram的博客文章,您可能会发现有帮助:http : //blog.qbox.io/an-introduction-to-
ngrams-in-elasticsearch

作为一个简单的示例,您可以使用以下映射

PUT /test_index{   "settings": {      "analysis": {         "filter": { "edge_ngram_filter": {    "type": "edge_ngram",    "min_gram": 2,    "max_gram": 20 }         },         "analyzer": { "edge_ngram_analyzer": {    "type": "custom",    "tokenizer": "standard",    "filter": [       "lowercase",       "edge_ngram_filter"    ] }         }      }   },   "mappings": {      "item": {         "properties": { "text_field": {    "type": "string",    "index_analyzer": "edge_ngram_analyzer",    "search_analyzer": "standard" }         }      }   }}

然后像这样索引文档:

PUT /test_index/item/1{   "text_field": [      "cat dog",      "elephant"   ]}

这些查询中的任何一个都将返回它:

POST /test_index/_search{    "query": {        "match": {"text_field": "dog"        }    }}POST /test_index/_search{    "query": {        "match": {"text_field": "ele"        }    }}POST /test_index/_search{    "query": {        "match": {"text_field": "ca"        }    }}

这是全部的代码:

http://sense.qbox.io/gist/4a08fbb6e42c34ff8904badfaaeecc01139f96cf



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/394550.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号