Поисковая система по ключевым словам, которая возвращает статистику вместо хитов - PullRequest
5 голосов
/ 25 мая 2011

Первый пост в StackOverflow, но я всегда рассматривал этот сайт как отличный источник общих знаний, и мне очень приятно видеть, что возникает из этого вопроса.

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

Что нам нужно, так это поисковая система, которая может предоставить статистику о результатах, которые соответствуют, когда пользователь ищет определенное ключевое слово. Скажем, например, что мы говорили о базе данных товаров в интернет-магазине. Нам необходимо иметь возможность возвращать статистику о количестве продуктов, соответствующих данному набору ключевых слов (а также иметь возможность фильтровать этот набор результатов по цене, категории и т. Д.), А также по общей сумме. количество товаров на складе (при условии, что оно хранится в поле в таблице товаров). Все поисковые системы, которые я нашел, возвращают лучшие результаты n , и если вы хотите получить статистику о размере набора результатов, вам нужно перечислить весь набор. Даже если вы этого не сделаете, вам все равно придется сделать это, чтобы получить общее количество товаров на складе.

Есть ли что-нибудь, кто знает о том, способен ли эта функция? Как я уже сказал, я счастлив, что мои руки пачкаются, и я либо собираю их сам, либо изменяю функциональность чего-то вроде Lucene, но я не смог найти ничего подходящего в Google.

Заранее спасибо, ребята!

Ответы [ 3 ]

3 голосов
/ 26 мая 2011

Вы можете взглянуть на Solr , который является многогранной поисковой системой, построенной на основе Lucene.В дополнение к полнотекстовому поиску Solr будет считать для вас много разных вещей.Хорошо справляется с комбинациями структурированных и полнотекстовых данных.

1 голос
/ 25 мая 2011

Здесь следует иметь в виду, что «перечисление всех результатов» может означать совершенно разные вещи - select count(*) сильно отличается от выполнения всех объединений и т. Д., Необходимых для фактического получения каждого объекта.Это верно как для Lucene, так и для реляционных баз данных.Так что я бы не стал беспокоиться о том факте, что в документации написано «мы перечисляем все результаты».

По моему опыту, стандартная грань Solr масштабируется до потребностей 99% людей.Если вы находитесь в этом 1% (то есть у вас есть огромная база данных), тогда я могу предложить несколько способов угадать результаты, которые могут быть быстрее.Но Solr, вероятно, будет работать для вас.

0 голосов
/ 25 мая 2011

Как я чувствую, теперь я достиг предела того, что я могу сделать с индексами SQL

Вы уверены?Я спрашиваю, потому что, если вы используете MySQL, вы, возможно, захотите изучить функциональность полнотекстового поиска PostgreSQL.Особенно, когда вы комбинируете его с модулями btree_gin и trigram и чрезвычайно приличной функциональностью объяснение , которая позволяет извлекать разумные оценки строк из очень сложных запросов.

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