Быстрое полнотекстовое сравнение двух баз данных

#full-text-search

Вопрос:

У меня есть 2 базы данных с данными о продукте. Данные как в третьей нормальной форме, так и в таблицах имеют следующие поля:

идентификатор, полное имя, имя атрибута, значение атрибута

Таким образом, для каждого идентификатора (продукта) существует множество строк (атрибутов).

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

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

Из-за большого количества продуктов я обращаюсь к полнотекстовым поисковым системам, таким как Sphinx, ElasticSearch или Apache Solr.

Но вопрос в том, могу ли я вычислить релевантность всех продуктов во второй БД, если некоторые новые продукты в первой БД не выполняют «запрос bruteforce» (выполняют поиск, используя каждый продукт из второй БД в качестве запроса)? Может быть, в таких движках есть какой-то «перевернутый поиск релевантности» или какой-то другой движок.

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

Ответ №1:

Опоздание более чем на месяц, но если вы все еще занимаетесь этим, может быть, вы сможете проверить это — Просачивание Мантикоры

Я не уверен, правильно ли я понимаю ваш вопрос.