Как изменить порядок результатов поиска на Elasti c Поиск? - PullRequest
1 голос
/ 28 февраля 2020

Я получаю результаты из следующих Elasti c Поисковый запрос:

"query": {
    "bool": {
        "should": [
            {"match_phrase_prefix": {"title": keyword}},
            {"match_phrase_prefix": {"second_title": keyword}}
        ]
    }
}

Результат хороший, но я хочу изменить порядок результатов, чтобы результаты соответствовали title top.

Буду признателен за любую помощь !!!

1 Ответ

1 голос
/ 28 февраля 2020

Мне удалось воспроизвести проблему с примерами данных, и Мое решение использует увеличение времени запроса, поскольку увеличение индекса индекса устарело по сравнению с основной версией ES 5.

Кроме того, я создал образец данные таким образом, что без повышения оба образца данных будут иметь одинаковую оценку, следовательно, нет никакой гарантии, что тот, который соответствует, будет первым в результате поиска, это должно помочь вам лучше понять его.

1. Отображение индекса

{
    "mappings": {
        "properties": {
            "title": {
                "type": "text"
            },
            "second_title" :{
                "type" :"text"
            }
        }
    }
}

2. Индекс Примеры документов

a)

{
    "title": "opster",
    "second_title" : "Dimitry"
}

b)

{
    "title": "Dimitry",
    "second_title" : "opster"
}

Поисковый запрос

{
    "query": {
        "bool": {
            "should": [
                {
                    "match_phrase_prefix": {
                        "title": {
                        "query" : "dimitry",
                        "boost" : 2.0  <-- Notice the boost in `title` field
                        }

                    }
                },
                {
                    "match_phrase_prefix": {
                        "second_title": {
                            "query" : "dimitry"
                        }
                    }
                }
            ]
        }
    }
}

Вывод

"hits": [
            {
                "_index": "60454337",
                "_type": "_doc",
                "_id": "1",
                "_score": 1.3862944,
                "_source": {
                    "title": "Dimitry", <-- Dimitry in title field has doube score
                    "second_title": "opster"
                }
            },
            {
                "_index": "60454337",
                "_type": "_doc",
                "_id": "2",
                "_score": 0.6931472,
                "_source": {
                    "title": "opster",
                    "second_title": "Dimitry"
                }
            }
        ]

Дайте мне знать, если у вас есть какие-либо сомнения в понимании этого.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...