результаты поиска и результаты аспектов не совпадают

Я выполняю phrase_prefix поиск по слову «инженер» и получаю 36 значений для термина «Инженерное дело» в аспекте поля «навыки». Затем я применяю term filter к этому полю фасета для «Инженерное дело», и теперь в новых отфильтрованных результатах количество «Инженерное дело» в фасете равно 42.

Отфильтрованный запрос возвращает 42 результата, каждый из которых соответствует аспекту, то есть все они содержат «Инженерное дело» в качестве навыка.

Таким образом, я ожидаю, что нефильтрованный запрос будет иметь 42 счетчика для термина «Инженерия» в аспекте «навыки», но, как я упоминал выше, это всего 36.

Вот сопоставление и запрос https://gist.github.com/santiago/a249418e5bf7531ead85.

Что мне здесь не хватает?

Спасибо

ПД. Я использую 0.90.5


person sofrito    schedule 10.01.2014    source источник
comment
Попробуйте следующее: gist.github.com/eire1130/44d18734503267c835b9 запустите его дважды, один раз с фильтр бит и один раз без.   -  person James R    schedule 10.01.2014
comment
Тот же результат. Без фильтра я вижу 36 отсчетов для инженерии, а при добавлении фильтра показывает 42.   -  person sofrito    schedule 11.01.2014
comment
Вот что лучше иллюстрирует ситуацию: gist.github.com/santiago/ee65c9da0c6a5270dee0 Запрос возвращает 6 результатов, посмотрите, что для каждого из этих 6 существуют навыки для «Microsoft Word», «Microsoft Office» и «английский язык». Но посмотрите на количество этих терминов в аспектах. «Microsoft Word» (5), «Microsoft Office» (5) и «Английский» (3)   -  person sofrito    schedule 11.01.2014
comment
что произойдет, если вы увеличите размер = 50 до чего-то гораздо большего, например, размер = 500?   -  person mconlin    schedule 11.01.2014


Ответы (1)


В версии 0.90.5 вы можете получить ожидаемые результаты, увеличив размер списка фасетов:

  "facets": {
    "skills": {
      "terms": {
        "field": "skills",
        "size": 50
      }
    },

Причина, по которой вы получаете неточный результат, и почему увеличение размера помогает, объясняется в Документы Elasticsearch по аспектам терминов:

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

В версии 0.9.6+ вы можете добавить параметр shard_size к фасету, который сообщает ему, сколько терминов запрашивать из каждого сегмента, прежде чем объединять результаты в один список.

person kielni    schedule 13.01.2014