优化 Elasticsearch 搜索:拼写容错、分面搜索与索引架构
1. 拼写容错搜索
在搜索过程中,用户可能会输入拼写错误的查询词,这可能导致搜索结果为空。为了解决这个问题,可以利用 Elasticsearch 的功能进行拼写容错搜索。
1.1 默认搜索情况
假设使用以下命令发送一个拼写错误的查询:
curl -XGET 'localhost:9200/wikipedia/_search?fields=title&pretty' -d' { "query": { "query_string": { "query": "austrelia", "default_field": "title", "minimum_should_match": "100%" } } }'由于没有包含拼写错误术语的文档,所以返回结果为空:
{ "took": 10, "timed_out": false, "_shards": { "total": 5, "successful": 5, "failed": 0 }, "hits": { "total": 0, "max_score": null, "hits": [] } }1.2 利用 ngram 字段进行拼写容错
为了让 Elasti