ElasticSearch Сортировка по фразе позиции - PullRequest
0 голосов
/ 09 июня 2018

У меня запрос с повышением приоритета, запрос работает нормально, но результаты не отсортированы

{
"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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...