2011-07-01 28 views
2

我已经运行Lucene/Solr 4来测试不同的功能,也是“集群”。 目前,有100万份文档被编入索引。每个文档具有以下字段:(胡萝卜)聚类如何在solr中工作?

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..." 

所有的字段索引和存储,EXAPT TEXT,这是唯一的索引,不存储。 我用下面的具体配置:

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

如果你看你看的例子中,该话题是不同的,但日本是一样的。是否有可能以这种方式配置solr/carrot,example1和example2将在一个集群中?因为匹配的“日本”?

此外,可能会有第三个主题如“新闻/核电”,里面没有“日本”,但HEADLINE和TEXT正在使用的词语:日本电厂。为了在一个集群中接收这3条新闻,solr/carrot配置是相关的?

谢谢!

回答

4

Carrot2被设计为聚集自然/非结构化文本,这种算法很少会产生人类会找到完美的结果。不幸的是,这样的算法也很难“调试” - 它们产生的集群取决于很多因素,例如文档中词的出现频率。在你的具体例子中,可能没有选择日本这个词来形成一个集群,因为它太频繁了 - 它出现在你引用的所有文件中。

以下是你可能会想尝试调整集群的一些技巧:

  • 尝试用一段后面加一个空格,而不是一个斜线,例如分离关键字“灾难,日本,核电站”。如果你这样做,Carrot2会把词序列,比如“核电站”,当作短语而不是单个单词。

  • 尝试一种不同的Carrot2聚类算法,例如, STC。

  • 如果有机会存储完整故事文本字段(或者可能是其中的一部分,如第一段),请使用HEADLINE作为carrot.title和carrot.snippet的全文/摘录。

  • 玩Carrot2算法的具体设置。最好的工具是Carrot2 Clustering Workbench。以下是如何将其连接到Solr:http://wiki.apache.org/solr/ClusteringComponent#Tuning_Carrot2_clustering

+0

谢谢,有很多有趣的想法,我会尝试。 –