Как (морковная) кластеризация работает в solr? - PullRequest
2 голосов
/ 01 июля 2011

У меня работает Lucene / Solr 4 для тестирования различных функций, а также "кластеризации". В настоящее время проиндексировано 1 миллион документов. Каждый документ имеет следующие поля:

ID (unique Key) Example1: 10245
               Example2: 24974
TOPIC (Keywords of the document) Example1: "disaster/japan/nuclear power station"
                                 Example2: "world/japan/nuclear power"
HEADLINE (1 line of text): Example1: "explosion at nuclear power plant in japan"
                           Example2: "news about japans nuclear power plant"
TEXT (the full text): "In the Japanese nuclear power plant in Fukushima..."

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

  <str name="carrot.title">TOPIC</str>
   <str name="carrot.snippet">HEADLINE</str>

Если вы посмотрите пример, вы увидите, что ТЕМА отличается, но Япония - то же самое. Можно ли настроить solr / carrot таким образом, чтобы example1 и example2 были в одном кластере? Из-за совпадения "япония"?!

Кроме того, может быть третья тема, такая как "новости / ядерная энергетика", внутри не должно быть "японии", но HEADLINE и TEXT используют слова: электростанция в Японии. Какая конфигурация solr / carrot необходима для получения этих 3 новостей в одном кластере?

Спасибо!

1 Ответ

4 голосов
/ 14 июля 2011

Carrot2 предназначен для кластеризации естественного / неструктурированного текста, и такие алгоритмы очень редко дают результаты, которые человек нашел бы идеальными. К сожалению, такие алгоритмы также трудно «отладить» - создаваемые ими кластеры зависят от многих факторов, таких как частота, с которой слова встречаются в ваших документах. В вашем конкретном примере слово Япония, возможно, не было выбрано для формирования кластера, поскольку оно встречается слишком часто - оно встречается во всех цитируемых вами документах.

Вот несколько советов, которые вы можете попробовать настроить кластеры:

  • Попробуйте разделить ключевые слова точкой, а затем пробелом, а не косой чертой, например. "Бедствие. Япония. АЭС". Если вы сделаете это, Carrot2 будет обрабатывать последовательности слов, такие как «атомная электростанция», как фразы, а не отдельные слова.

  • Попробуйте другой алгоритм кластеризации Carrot2, например, STC.

  • Если есть шанс сохранить ваше полное текстовое поле истории (или, возможно, его часть, например, первый абзац), используйте HEADLINE для carrot.title и полный текст / выдержку для carrot.snippet. .

  • Поиграйте с настройками алгоритмов Carrot2. Лучшим инструментом для этого был бы Carrot2 Clustering Workbench. Вот как подключить его к Solr: http://wiki.apache.org/solr/ClusteringComponent#Tuning_Carrot2_clustering

...