我在搜索字段上有以下分析器:
GET _analyze
{
"tokenizer": "standard",
"filter": [ "word_delimiter","lowercase", {"type" : "shingle",
"min_shingle_size" : 2,
"max_shingle_size" : 4,
"output_unigrams" : true}, {"type" : "pattern_replace",
"pattern" : " ",
"replacement" : ""} ],
"text": "One marium malik 270"
}
弹性搜索查询:
{
["index"]=>
string(19) "_dev"
["from"]=>
int(0)
["size"]=>
int(60)
["body"]=>
array(3) {
["query"]=>
array(1) {
["bool"]=>
array(3) {
["should"]=>
array(2) {
[0]=>
array(1) {
["bool"]=>
array(1) {
["must"]=>
array(3) {
[0]=>
array(1) {
["match"]=>
array(1) {
["searched_text"]=>
array(2) {
["query"]=>
string(4) "marium"
["fuzziness"]=>
string(4) "AUTO"
}
}
}
[1]=>
array(1) {
["match"]=>
array(1) {
["searched_text"]=>
array(1) {
["query"]=>
string(3) "malik270"
}
}
}
}
}
}
[1]=>
array(1) {
["bool"]=>
array(1) {
["should"]=>
array(1) {
[0]=>
array(1) {
["match"]=>
array(1) {
["manu_no"]=>
array(2) {
["query"]=>
string(14) "marium malik270"
["boost"]=>
int(10)
}
}
}
}
}
}
}
["minimum_should_match"]=>
int(1)
}
}
["sort"]=>
array(1) {
["sp"]=>
array(2) {
["mode"]=>
string(3) "min"
["order"]=>
string(4) "desc"
}
}
}
}
当我搜索以上关键字时,我得到了几个不相关的结果。
不育症的结果包括:
marium malik 97
marium malik Plus TN
marium malik PLUS OG
等
但是,如果我删除“ malik”,请将其分隔在另一个必须查询的地方:
must: match searched_keyword: 'malik'
must: match searched_keyword: '270'
,并在该查询中保留数字,然后就可以正常工作了。
可能是什么问题?