如何将Elasticsearch Analyzer与搜索查询连接(Typeahead搜索,组合搜索)?
我将映射分析仪访问了该领域。
我的优先级是基于搜索(我想基于 给定的文字) 1必须从左侧匹配(1优先级), 2给定文本中的任何单词(2个优先级), 3给定文本中的任何字符(3个优先级)
**1. I created field mapping with the custom analyzer.**
`
"properties" => [
"name" => [
"type" => "search_as_you_type",
"analyzer" => "my_tokenizer",
],
];
`
**2. created a custom analyzer**
{
"settings": {
"analysis": {
"tokenizer": {
"my_tokenizer": {
"type": "edge_ngram",
"min_gram": 1,
"max_gram": 10,
"token_chars": ["letter", "digit", "symbol"]
}
},
"analyzer": {
"my_analyzer":{
"tokenizer": "my_tokenizer"
}
}
}
}
}
**3. Search query**
'query' => [
'query_string' => [
'default_field' => "name",
'query' => "test",
'default_operator' => "AND",
],
],
**The result I am getting:**
TEST
ABC TEST
NAKT TZY TEST
TEST POST
TEST VN
**What I want :**
TEST
TEST VN
TEST POST
ABC TEST
NAKT TZY TEST
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

我不明白为什么您要将分析器用于搜索_AS_YOU_TYPE字段,该字段要用作自动完成。
search_as_you_type已经使用ngram创建了子字段。
我像这样映射了:
下面的查询按照您需要运行。
查看更多: <="" a="">
I don't understand why you use an analyzer for a search_as_you_type field that you want to use as an autocomplete.
The search_as_you_type already creates the subfields with ngram.
I mapped like this:
And the query below ran as you want.
See more: https://www.elastic.co/guide/en/elasticsearch/reference/current/search-as-you-type.html