如果我搜索当前查询和使用的分析器这个术语“Liebe”,则返回包含单词“Liebe”的结果作为不同单词的一部分“Verlieben”优先于那些只有这个单词的人。< / p>
应该是另一种方式。 我也在使用一些高级过滤器和聚合。但这是我用来搜索的最基本的查询。
{
"query": {
"query_string": {
"query": "Liebe",
"default_operator": "AND",
"analyzer": "my_analyzer1"
}
},
"size": "10",
"from": 0
}
分析仪和索引设置如下:
{
"settings": {
"analysis": {
"filter": {
"nGram_filter": {
"type": "nGram",
"min_gram": 2,
"max_gram": 20,
"token_chars": [
"letter",
"digit",
"punctuation",
"symbol"
]
}
},
"analyzer": {
"nGram_analyzer": {
"type": "custom",
"tokenizer": "whitespace",
"filter": [
"lowercase",
"asciifolding",
"nGram_filter"
]
},
"whitespace_analyzer": {
"type": "custom",
"tokenizer": "whitespace",
"filter": [
"lowercase",
"asciifolding"
]
},
"my_analyzer1":{
"type": "custom",
"tokenizer": "whitespace",
"filter": [
"lowercase",
"my_stop'.$s_id.'",
"asciifolding"
]
}
}
}
},
"mappings": {
"product": {
"_all": {
"index_analyzer": "nGram_analyzer",
"search_analyzer": "whitespace_analyzer"
},
"properties": {
'.$mapping.'
}
}
}
}
请忽略$ mapping。这些是基于我的框架中的一些设置驻留在索引中的动态字段。
任何人都可以请指点我不需要改变的方向,可以得到我上面提到的内容吗?
我检查过很多匹配查询的内容。但是,我没有修复任何字段。所以,我不能用它。我想要精确搜索和部分匹配的搜索结果(使用nGrams)。
请帮忙!
谢谢!