Solr общее ключевое слово / фразы - PullRequest
3 голосов
/ 11 февраля 2011

Я использую Solr через PHP для поиска всех аспектов моего сайта. Я пытаюсь реализовать функцию и не могу найти информацию о том, как ее реализовать.

У меня есть группа документов (рецензий), каждая о конкретном продукте.

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

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

EDIT:

После того, как у меня есть список уникальных (не ограничивающих слов / общих слов) ключевых слов, которые появляются в нескольких обзорах, я хочу ранжировать их по количеству раз, когда они появляются в обзорах. Например, если люди пишут отзывы о камерах, ключевые слова могут выглядеть следующим образом:

дорого (появляется в 7 обзорах) выдержка (появляется в 5 обзорах) плохое изображение (появляется в 3 обзорах)

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

«... к сожалению, эта камера слишком ДОРОГА для того, что вы получаете ...» (в 7 обзорах) «... СКОРОСТЬ ЗАДЕРЖКИ слишком медленная для ...» (5 отзывов) «... Плохое качество изображения - самое большое падение камер ...» (в 3 обзорах)

Что касается того, когда запускать это, я все еще не уверен. Возможно, в режиме реального времени (когда вы просматриваете продукт, затем кэшируетесь для времени X), каждый раз, когда публикуется новый отзыв, отмечается продукт, который будет обновляться, или в день выполнения cronjob, и т. Д. Он не будет запускаться одновременно для всех ключевых слов. , он будет работать против всех ключевых слов во всех обзорах для одного продукта. Затем повторяется для каждого продукта.

Надеюсь, это имеет больше смысла.

Любая помощь в достижении этого в Solr будет принята с благодарностью.

Ответы [ 3 ]

1 голос
/ 17 февраля 2011

Мне кажется, что вы ищете ShingleFilter . Вы можете использовать его для создания униграмм / биграмм (возможно, с полем копирования), а затем получать статистику по этим токенам для генерации вашего интерфейса ,

0 голосов
/ 16 февраля 2011

Это похоже на работу для анализатора текста, а не Solr.Вероятно, вам понадобится скрипт на python (так как он имеет хорошие текстовые библиотеки для разбора), который просматривает все слова в обзорах, а затем дает вам наиболее часто встречающиеся слова в каждом обзоре (или) во всех обзорах с их количеством.Затем вы можете проиндексировать несколько слов по обе стороны от этих наиболее часто встречающихся слов и создать реферат для вашего документа (в данном случае это продукт) и проиндексировать его в Solr, который будет возвращен как часть результата поиска.

0 голосов
/ 15 февраля 2011

Эта задача не особенно подходит для решения.Единственное, что вы получаете от использования solr, - это поддержка паролей / стоп-слов, которая будет намного быстрее, если будет реализована в локальном алгоритме.Я бы создал новую таблицу в базе данных для "review_keyword", сопоставляющей обзоры с одиночными и парами ключевых слов.При вставке нового отзыва также добавьте сопоставление в отдельную строку для каждого ключевого слова в обзоре (это то место, где начинаются слова с запятой / стоп-слова).Вы можете запустить объединение выбора в этой таблице, когда вы хотите просмотреть отзывы о продукте, чтобы получить ключевые слова в обзорах для продукта и обзор из этого набора.В зависимости от вашего использования, это будет лучше выполнять обновления, а не запросы.

...