klara
July 6, 2017, 2:23pm
1
Столкнулась с неожиданным поведением:
Запрос dus_max-multi_match-cross field
Среди полей есть:
Brand.string analyzer1
Brand.hyphen_string analyzer1
Goodsname.string analyzer2
Есть товар 1:
{Goodsname.string : "футболка lego "
Brand.string : "lego "}
товар 2:
{Goodsname.string : "футболка "
Brand.string : "lego "}
Если query: " футболка lego"
Результат только товар1. Почему товар2 нет?
Если запрос "lego"\"футболка" результат : товар1+ товар2
В profile
видно, что query обрабатывается так:
(+((+(brand.string:футболка | brand.string.hyphen_search:футболка) +(brand.string:lego | brand.string.hyphen_search:lego)) (+(goodsName:футболка | subject.value:футболка | tags.search_string:футболка) +(goodsName:lego | subject.value:lego | tags.search_string:lego)) subject.value.raw:футболка lego) )
Связано ли это с разными анализаторами?почему? :
Brand.string analyzer1
Goodsname.string analyzer2
в profile видно, что сгруппированы отдельно поиск в brand поле и goodsName, почему не был взят документ, который частично из первого и второго запросов?
Вы не могли бы показать, как воспроизвести проблему полностью, с примером как в этом ответе ?
klara
July 7, 2017, 7:44am
4
GET products/nms/_search
{"profile":true,
"query": {
"constant_score": {
"query": {
"bool": {
"must": [
{
"dis_max": {
"queries": [
{
"multi_match": {
"type": "cross_fields",
"query": "кроссовки nike",
"minimum_should_match": "30%",
"operator": "and",
"fields": [
"brand.string",
"brand.string.hyphen_search",
"subject.value^20",
"groups.value"
//"brand.name",
// "brand.value.raw",
// "brand.directionName"
]
}
}
]
}
}
]
}
}
}
}
}
hits : 0
profile:
> "description": "+ConstantScore((+groups.value:кроссовки +groups.value:nike)
> (+(brand.string:кроссовки | brand.string.hyphen_search:кроссовки)
> +(brand.string:nike | brand.string.hyphen_search:nike))
> (+subject.value:кроссовка +subject.value:nike)) #(ConstantScore(_type:nms))^0.0",
GET products/nms/_search
{"profile":true,
"size": 0,
"query": {
"constant_score": {
"query": {
"bool": {
"must": [
{
"dis_max": {
"queries": [
{
"multi_match": {
"type": "cross_fields",
"query": "кроссовки nike",
"minimum_should_match": "30%",
"operator": "and",
"fields": [
"brand.string",
"brand.string.hyphen_search",
"subject.value^20",
"groups.value",
"brand.name",
"brand.value.raw",
"brand.directionName"
]
}
}
]
}
}
]
}
}
}
}
}
"hits":
"total": 1946
profile: ...
"description": "+ConstantScore((+groups.value:кроссовки +groups.value:nike) (+(brand.string:кроссовки | brand.string.hyphen_search:кроссовки) +(brand.string:nike | brand.string.hyphen_search:nike)) (+(brand.directionName:кроссовка | brand.name:кроссовка | (subject.value:кроссовка)^20.0) +(brand.directionName:nike | brand.name:nike | (subject.value:nike)^20.0)) brand.value.raw:кроссовки nike) #(ConstantScore(_type:nms))^0.0"
system
(system)
Closed
August 4, 2017, 7:51am
6
This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.