У меня запрос с повышением приоритета, запрос работает нормально, но результаты не отсортированы
{
"query": {
"bool": {
"should": [
{
"bool": {
"should": [
{
"prefix": {
"subitem.keyword": "i love dogs"
}
}
],
"boost": 100
}
},
{
"bool": {
"should": [
{
"match": {
"subitem": {
"query": "i love dogs",
"operator": "AND"
}
}
}
],
"boost": 10
}
},
{
"bool": {
"should": [
{
"match_phrase": {
"subitem": "i love dogs"
}
}
],
"boost": 30
}
}
]
}
},
"size": 30
}
Настройка поиска:
Я использую персидский анализатор и пользовательский нормализатор
"analysis" => [
"normalizer" => [
"my_normalizer" => [
"filter" => [
"lowercase"
],
"type" => "custom"
]
],
"char_filter"=> [
"zero_width_spaces"=> [
"type"=> "mapping",
"mappings"=> [ "\\u200C=> "]
]
],
"filter"=> [
"persian_stop"=> [
"type"=> "stop",
"stopwords"=> "_persian_"
],
],
"analyzer"=> [
"persian"=> [
"tokenizer" => "standard",
"char_filter"=> [ "zero_width_spaces" ],
"filter"=> [
"lowercase",
"arabic_normalization",
"persian_normalization",
"persian_stop",
]
],
]
]
Сопоставление поиска с нормализатором для поля ключевого слова и введите ключевое слово
"whole_name_fa" => [
'type' => 'text',
'analyzer' => 'persian',
"fields" => [
"keyword" => [
"type" => "keyword",
"ignore_above" => 256,
"normalizer" => "my_normalizer"
]
]
],
Я хочу отсортировать результаты по позиции фразы
Например, "я люблю собак" врезультаты должны сортироваться как показано ниже:
i love dogs
i love dogs and cats
cats goods and i love dogs and birds
cats goods birds goods i love dogs