IDF рассчитывает на основе отфильтрованных документов? - PullRequest
0 голосов
/ 16 мая 2018

Я собираюсь разработать многопользовательскую поисковую платформу, используя Elasticsearch. Одним из вариантов является обмен индексными кросс-арендаторами. Но проблема в том, что документы для разных арендаторов в одном и том же индексе могут влиять на оценку результатов, так как часть оценки IDF рассчитывается для всех документов в одном индексе. Можно ли позволить ES рассчитать IDF на основе отфильтрованных документов? Например, фильтруйте документы по арендатору, чтобы документы одного арендатора не влияли на оценку документов другого арендатора в том же индексе.

1 Ответ

0 голосов
/ 16 мая 2018

Нет встроенного способа вычисления IDF на основе чего-либо, а не документов в индексе (или сегменте), в зависимости от search_type=dfs_query_then_fetch param.

Какие варианты у вас есть:

  • Реализация пользовательского подобия, которое будет рассчитывать IDF так, как вам нужно (не уверен, что он будет достаточно эффективным, также требуется специальный код + настройка развертывания)

  • Отдельные индексы

  • Направляйте документы для арендатора X на осколок X, одновременно направляя документы арендатора Y на осколок Y, используя поле _routing. Больше информации об этом подходе - https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-routing-field.html. Позже, не используйте глобальный IDF, а скорее локальный IDF (параметры по умолчанию), и это должно сработать. Проблема в том, что у вас есть действительно ограниченный контроль над этим - только осколок на арендатора, что делает невозможным правильное масштабирование позже.

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