2017-01-11 6 views
0

У меня есть список из 50 миллионов продуктов. Каждый продукт имеет список из 200 функций. Я ищу, чтобы найти похожие продукты, сопоставляя функции продукта, которые имеют максимальное перекрытие по 200 функциям.Elasticsearch: Поиск похожих продуктов

В настоящее время я объединяю 200 слов с пробелами и формирую длинную строку. Когда я хочу найти похожие продукты для определенного выбранного продукта, я извлекаю сохраненную строку длиной 200 слов и поиск elasticsearch.

Это дает ожидаемые результаты, но каждый поиск занимает примерно 7 секунд. Это потому, что поисковая фраза настолько длинная. Есть ли лучший способ сделать это и найти лучшее перекрытие на эластике?

ответ

0

Я предлагаю вам проверить/попробовать несколько вещей:

У меня есть список из 50 миллионов единиц продукции. Каждый продукт имеет список из 200 . Я ищу, чтобы найти похожие продукты, сопоставив продукты , которые имеют максимальное перекрытие по 200 функциям. В настоящее время Я объединяю 200 слов с пробелами и формирую длинную строку.

Предполагаемый продукт - это тип документа, который вы могли бы дать ему попробовать сохранить функции обычно как массив значений и enabling field data на нем. Тогда было бы легко использовать aggregations, чтобы сгруппировать их, используя соответствующее упомянутое максимальное перекрытие и получить то, что вы хотите. Я твердо верю, что это будет намного быстрее.

Я извлекаю сохраненную строку длиной 200 слов и поиск результатов поиска.

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

Убедитесь, что у вас есть elasticsearch environment proper prepared.

Наконец, с этим количеством документов есть вероятность, что вы найдете shard /replicas configuration, который лучше подходит вашему делу, чем по умолчанию.