2016-06-22 3 views
1

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

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

Если разница слишком велика, документ не считается дубликатом. Проблема в том, что я не знаю, как оценить разницу, потому что _score в ответе на поиски ничего не говорит о том, насколько велика разница.

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

Edit: Например, если я выполнить запрос, как это возвращает JSON с _SCORE, более чем 1,00

Запрос: GET/документы/SomeType/_search

{ 
    "query": { 
     "bool": { 
      "should": [ 
       {"match": { 
        "title": { 
         "query": "some title" 
        } 
       }} 
      ] 
     } 
    } 
} 

Пример ответа:

{"взял": 1, "timed_out": false, "_shards": ..., "hits": { "всего": 100, "max_score": 1,7588379, }}

Как говорит документация, _SCORE - это просто число с плавающей, ничего не говоря о его диапазоне.

+0

Максимально возможный балл для любого запроса будет 1,00, я не совсем уверен, что вы ищете, можете ли вы привести пример? Это максимальный балл для запроса среди документов? В этом случае простой поиск дает вам список. –

+0

Обновлено сообщение. @VishalRao Насколько я знаю, поле «максимальная оценка» означает «максимальный результат в согласованном результирующем наборе». Это не максимально возможный балл для запроса. –

ответ

2

Это интересный вопрос. Так как Practical Scoring Function (PSF) обычно использует частоту обратного документа (IDF), вопрос «Что такое максимальная оценка документа при запросе» не является корректным. Результат подсчета очков будет зависеть от всех документов, т. Е. Индекса, и даже от количества осколков в вашей конфигурации ES.

Мое предположение заключается в том, что путем изменения индекса можно показать, что максимальный балл запроса неограничен, если используется IDF.

В особых случаях, если вы деактивируете часть IDF PSF, используя, например, constant_score, максимальная оценка должна быть ограничена, поскольку она зависит только от самого документа, а не от индекса.

Это, как говорится, я также хотел бы увидеть конечную точку _max_score, возвращающую inf, в случае IDF используется где-то в запросе и фактическая максимальная оценка документа, если нет.

Смежные вопросы