Извлечение небольших релевантных битов текста (как это делает Google) из результатов полнотекстового поиска - PullRequest
2 голосов
/ 05 июня 2009

Я реализовал полнотекстовый поиск в базе данных дискуссионного форума и хочу отобразить результаты поиска так, как это делает Google. Даже для очень длинной HTML-страницы только два или три строки текстов, отображаемых в списке результатов поиска. Обычно это линии которые содержат условия поиска.

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

Хотел бы получить несколько указаний, идей и идей.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 05 июня 2009

Если вы ищете что-то более изощренное, чем подход «линия до / после», суммирующее устройство может помочь.

Вот наивная байесовская система: http://classifier4j.sourceforge.net/

Байес - это статистическая система, используемая многими фильтрами спама - я исследовал сумматоры Байеса несколько лет назад и обнаружил, что они довольно хорошо справляются с суммированием текста, при условии, что для обработки достаточно текста. Однако я не пробовал вышеупомянутую библиотеку, поэтому ваш пробег может отличаться.

0 голосов
/ 05 июня 2009

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

Проверьте наличие поисковых запросов в заголовках (H1, H2 и т. Д.) И уделите им больше внимания.

Это должно помочь вам начать.

0 голосов
/ 05 июня 2009

Вы пробовали «строку до / после появления поискового запроса» в коде, чтобы увидеть, достаточно ли хороши результаты для того простого, что вы хотите? Может быть, уже достаточно?

В противном случае вы можете использовать фрагменты предложений: не разбивать на строки, а на новые строки, точки с запятой, запятые, дефисы и т. Д. Затем покажите фрагменты, содержащие условия поиска. Вы можете отделить каждую часть предложения с помощью "..." или чего-то еще.

Если вы получаете много этих кусочков, вы можете попытаться расставить приоритеты по кусочкам, отсортировать их по убыванию и показать только первые n из них. И / или вырежьте фрагменты только для поискового запроса и нескольких слов вокруг поискового запроса.

Всего лишь пара неформальных идей, которые могут помочь вам начать?

...