如何在solr 6.5中实现k表示聚类?
要求: -
1)我想根据分数
在查询时对文档进行聚类2)我编写了自己的处理程序,我想在该处理程序中添加聚类函数,使其不符合文档的顺序
我曾尝试编写群集搜索组件,如下所示: -
<searchComponent name="clustering" enable="${solr.clustering.enabled:true}" class="solr.clustering.ClusteringComponent">
<lst name="engine">
<str name="name">kmeans</str>
<str name="carrot.algorithm">org.carrot2.clustering.kmeans.BisectingKMeansClusteringAlgorithm</str>
<str name="BisectingKMeansClusteringAlgorithm.clusterCount">4</str>
<str name="documents">100</str>
<str name="BisectingKMeansClusteringAlgorithm.maxIterations">4</str>
</lst>
</searchComponent>
我的请求处理程序如下:
<requestHandler name="abc" class="solr.SearchHandler">
<lst name="invariants">
<str name="defType">synonym_edismax</str>
<str name="synonyms">true</str>
<str name="indent">on</str>
</lst>
<lst name="appends">
<str name="fq">search_term</str>
</lst>
<lst name="defaults">
<str name="echoParams">none</str>
<str name="wt">json</str>
<str name="timeAllowed">15000</str>
<str name="qf">Field1</str>
<str name="qf">Field2^0.5</str>
<str name="pf">Field3</str>
<float name="tie">0.2</float>
<str name="fl">Field5,Field6</str>
<str name="facet">false</str>
<str name="mm">2<-1 4<70%</str>
<!-- spellcheck -->
<str name="spellcheck.dictionary">default</str>
<str name="spellcheck">on</str>
<str name="spellcheck.extendedResults">true</str>
<str name="spellcheck.count">1</str>
<str name="spellcheck.onlyMorePopular">true</str>
<str name="spellcheck.collate">true</str>
</lst>
<arr name="last-components">
<str>spellcheck</str>
</arr>
</requestHandler>
如何在此请求处理程序中添加聚类,以使我的聚类数为4,迭代次数为4
还有什么区别
carrot.url
carrot.snippet
carrot.title
我阅读了文档定义,但我无法理解它。
答案 0 :(得分:1)
将集群组件添加到请求处理程序中:
<arr name="last-components">
<str>spellcheck</str>
<str>clustering</str>
</arr>
然后:
<str name="carrot.url">id</str> -> unique key of your document
This is the unique identifier for your document.
<str name="carrot.title">doctitle</str> -> the title(s)/label(s) for your document
This is the field or list of fields, which are short and tend to be more important to group your documents together
<str name="carrot.snippet">content</str> -> the content/text/body of your document
来自维基:
<强> carrot.title 强>
应映射到逻辑文档标题的字段(以逗号或空格分隔的字段列表)。与内容(片段)相比,聚类算法通常对标题字段的内容给予更多权重。为获得最佳效果,该字段应包含简洁,无噪音的内容。如果数据中没有明确的标题,则可以将此参数留空。
<强> carrot.snippet 强>
应映射到逻辑文档主要内容的字段(以逗号或空格分隔的字段列表)。如果此映射指向非常大的内容字段,则群集的性能可能会显着下降。另一种方法是使用查询上下文片段进行聚类而不是完整的字段内容。有关详细信息,请参阅carrot.produceSummary参数的说明。
<强> carrot.url 强>
应映射到逻辑文档的内容URL的字段。如果不需要,请留空。