solr 自聚类实现

article/2025/9/12 18:05:10

  参考官网:https://lucene.apache.org/solr/guide/6_6/result-clustering.html

  最近用到solr自聚类的,先简单介绍如下:

  1、配置文件

    主要配置文件必须配置如下内容:

<lib dir="${solr.install.dir:../../..}/contrib/clustering/lib/" regex=".*\.jar" />
<lib dir="${solr.install.dir:../../..}/dist/" regex="solr-clustering-\d.*\.jar" />

    

<searchComponent name="clustering" enable="${solr.clustering.enabled:true}" class="solr.clustering.ClusteringComponent"><!-- Lingo clustering algorithm --><lst name="engine"><str name="name">lingo</str><!--<bool name="optional">true</bool>--><str name="carrot.algorithm">org.carrot2.clustering.lingo.LingoClusteringAlgorithm</str><str name="carrot.resourcesDir">clustering/carrot2</str></lst><!-- An example definition for the STC clustering algorithm. --><lst name="engine"><str name="name">stc</str><bool name="optional">true</bool><str name="carrot.algorithm">org.carrot2.clustering.stc.STCClusteringAlgorithm</str><str name="carrot.resourcesDir">clustering/carrot2</str></lst><lst name="engine"><str name="name">kmeans</str><!--<bool name="optional">true</bool>--><str name="carrot.algorithm">org.carrot2.clustering.kmeans.BisectingKMeansClusteringAlgorithm</str><str name="carrot.resourcesDir">clustering/carrot2</str></lst></searchComponent>

    下面的配置文件根据自己的实际情况进行修改:

 <requestHandler name="/clustering"startup="lazy"class="solr.SearchHandler"><lst name="defaults"><bool name="clustering">true</bool><bool name="clustering.results">true</bool><!-- Field name with the logical "title" of a each document (optional) --><str name="carrot.title">keyword</str><!-- Logical field to physical field mapping. --><str name="carrot.url">id</str><!-- Field name with the logical "content" of a each document (optional) --><str name="carrot.snippet">summary</str><!-- Apply highlighter to the title/ content and use this for clustering. --><bool name="carrot.produceSummary">true</bool><!-- the maximum number of labels per cluster --><!--<int name="carrot.numDescriptions">5</int>--><!-- produce sub clusters --><bool name="carrot.outputSubClusters">false</bool><!-- Configure any other request handler parameters. We will cluster thetop 100 search results so bump up the 'rows' parameter. --><!--<str name="defType">edismax</str><str name="qf">text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4</str><str name="q.alt">*:*</str>--><str name="defType">edismax</str><!--<str name="qf">summary^0.5 category^1.2  id^10.0</str>--><str name="qf">keyword^0.5 title^1.2  id^10.0</str><str name="rows">100</str><str name="fl">*,score</str></lst><!-- Append clustering at the end of the list of search components. --><arr name="last-components"><str>clustering</str></arr></requestHandler>

 

    managed-schema配置文件包含以下内:

   

 <fieldType name="text_ik" class="solr.TextField"><analyzer type="index" class="org.wltea.analyzer.lucene.IKAnalyzer"/><analyzer type="query" class="org.wltea.analyzer.lucene.IKAnalyzer"/></fieldType><field name="id" type="string" multiValued="false" indexed="true" required="true" stored="true"/><field name="text" type="text_ik" multiValued="false" indexed="true" stored="true" termVectors ="true"/><field name="title" type="text_ik" multiValued="false" indexed="true" stored="true" /><field name="snippet" type="text_ik" multiValued="false" indexed="true" stored="true" /><field name="keyword" type="text_ik" multiValued="false" indexed="true" stored="true" /><field name="category" type="text_ik" multiValued="false" indexed="true" stored="true" /><field name="summary" type="text_ik" multiValued="false" indexed="true" stored="true"/><field name="path" type="string" multiValued="false" indexed="true" stored="true"/>

 

 

    注意:text_ik对应的分词组件,要引用对应的jar包,具体参见:http://www.cnblogs.com/shaosks/p/8204615.html

 

  2、测试索引的文件

    启动solr服务,在浏览器输入:http://localhost:8983/solr/mycore/clustering?q=*:*&rows=10

    结果如下:

    

 

  3、java查询代码

import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrQuery;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClient;
import org.apache.solr.client.solrj.response.Cluster;
import org.apache.solr.client.solrj.response.QueryResponse;
import org.apache.solr.client.solrj.response.ClusteringResponse;
import org.apache.solr.common.SolrDocument;import java.io.IOException;
import java.util.List;/*** @Author:sks* @Description:* @Date:Created in 9:41 2018/1/18* @Modified by:**/
public class AutoCluster {private static SolrClient solr;/*** @Author:sks* @Description:初始化solr客户端* @Date:*/public static void Init(String urlString){solr = new HttpSolrClient.Builder(urlString).build();}public static void main(String[] args) throws SolrServerException,IOException {String urlString = "http://localhost:8983/solr/mycore";String path = "D:/work/Solr/ImportData";Init(urlString);getAutoClusterInfo();System.exit(0);}/*** @Author:sks* @Description:获取聚类数据* @Date:*/private static void getAutoClusterInfo() throws SolrServerException,IOException {//使用这个对象做查询SolrQuery params = new SolrQuery();//查询所有数据params.set("qt", "/clustering");params.setQuery("*:*");params.setStart(0);params.setRows(30);QueryResponse queryResponse = solr.query(params);ClusteringResponse clr = queryResponse.getClusteringResponse();List<Cluster> list = clr.getClusters();//拿到聚类数据集合,返回查询结果String  txt = "";for(Cluster c :list){//类别标签List<String> lblist = c.getLabels();for(String lb:lblist){System.out.println(lb);}//聚类文档IDList<String> doclist  = c.getDocs();for(String doc:doclist){System.out.println("        " + doc);}}}}

    查询结果如下:

 

  

 

 

    

转载于:https://www.cnblogs.com/shaosks/p/8309149.html


http://chatgpt.dhexx.cn/article/giTpxvbG.shtml

相关文章

《学术小白的学习之路 06》自然语言处理之 数据预处理、Jieba分词和文本聚类

本文主要是学习参考杨秀璋老师的博客,笔记总结。 原文链接 文章目录 书山有路勤为径&#xff0c;学海无涯苦作舟&#xff08;行行代码要手敲&#xff09;零、吃水不忘挖井人一、数据预处理&#xff08;分词-清洗-特征提取-权重&#xff09;二、中文分词2.1 中文分词技术2.2 Jie…

kmeans实现文本聚类

需求 拿到的需求是输入n个文本,对文本进行聚类,由于这些输入不能通过历史数据进行训练,所以这个主要就是用无监督学习来解决。 kmeans 谈到聚类就会想到kmeans,它的核心思想是给定的K值和K个初始质心将样本中每个点都分到距离最近的类簇中,当所有点分配完后根据每个类簇的…

PS放大图片而不模糊的操作方法

1、使用ps打开图片&#xff08;原始图片200*200&#xff09;&#xff0c;正常情况下ctrl “” 放大图片&#xff0c;图片会变模糊&#xff0c;如下&#xff1a; 原始图片&#xff1a; 放大之后&#xff1a; 明显模糊了。 2、右键图层&#xff0c;选择复制图层…

使用PS制作放大镜效果

&#xff08;撰写时间&#xff1a;2019年5月7日 作者&#xff1a;陈景鸿&#xff09; PS的的放大镜也就是将模糊的东西能够看得清楚&#xff0c;也是一款神奇的东西&#xff0c;制作放大镜有两种效果&#xff0c;一种是将图片发大&#xff0c;一种是将图片变得清晰&#xff0c…

使用PS中的创建剪贴蒙版来做放大镜

使用PS中的创建剪贴蒙版来做放大镜 &#xff08;写作时间&#xff1a;4月15日 作者&#xff1a;陈铭军&#xff09; 首先随便找一张建筑物照片导入PS&#xff0c;其他照片也可以做。 然后“Ctrl”“J”或者鼠标右键点击背景图层复制两次。激活背景副本&#xff0c;在上方的菜…

ps一些基本操作

调整图片、图层大小 点击矩形 画出需要缩小/放大的矩形框ctrlt&#xff0c;缩小/放大矩形框点击图像—画布大小&#xff0c;修改画布大小

ps基础 工作区面板 放大镜 抓手 移动工具

20191110笔记 ps 又叫做编辑软件又称为 编辑对象:像素图 点阵图 位图 ps基础-设置工作区 工作区 是设计师在使用ps时自定义的工作面板组合,方便提升工作效率 工具栏 选项栏 色板 历史纪录 颜色 图层 ps基础-图片的放大 缩小 切换 移动 放大镜 ctrl 放大镜 ctrl-…

ps把图片无损放大的方法

工作中我们当遇到图片编辑修改方面的问题时&#xff0c;我们都习惯用PS软件进行处理。如果想要将图片放大&#xff0c;第一想到的也是用PS软件&#xff0c;但是PS放大后的图片会变得很模糊&#xff0c;于是很多人问&#xff1a;ps怎么把图片无损放大&#xff1f; 其实PS是没有…

ps 做放大镜效果

1 随意打出你想做出效果的文字或应用图片 2.复制一层文字图层&#xff0c;将复制的文字图层栅格化后用椭圆选框工具在你想要放大的地方画一个正圆 3.滤镜——扭曲——球面化 参数可以根据自己调节 4.再新建一个图层&#xff0c;在原来的正圆选框上 编辑 ——描边&#xff0c;…

ps怎么放大图片保持清晰度?

作为一名上班族学会PS软件是非常有必要的&#xff0c;可以帮助我们将图片改成我们需要的样子&#xff0c;如格式转换&#xff0c;修改图片大小等。但是大家有没有发现&#xff0c;使用PS软件将图片放大后&#xff0c;图片会变得很模糊&#xff0c;不像原图那样清晰了&#xff0…

ps图片放大后模糊怎么办?

ps图片放大后模糊怎么办&#xff1f;说到如何将图片放大&#xff0c;相信大家想到最多的方法就是用ps软件进行放大&#xff0c;ps是一个比较强大的图片编辑软件。但是大家同样也发现了一个问题&#xff0c;就是用ps将图片尺寸进行放大后&#xff0c;图片的清晰度会降低&#xf…

ps图像放大后变清晰和文字模糊变清晰

1.使ps图像放大后变清晰 正常直接拉伸图片&#xff0c;图片会变得十分模糊 点击图像&#xff0c;重新采样改为保留细节2.0 减少杂色拉到 100 然后图片就会变得清晰 2.使ps中文件的文字变清晰 首先ctrlshiftu去色&#xff0c;然后用笔分别吸取黑白两个地方就能调回来 但是文字…

制作局部区域放大效果(每天一个PS小项目)

原图如下所示&#xff1a; 按住Ctrl点击通道中黑白放大镜&#xff0c;将放大镜选出来&#xff1a; 按CtrlC复制&#xff0c;点击猫的面板&#xff0c;按CtrlV粘贴&#xff1a; 按CtrlJ复制一个背景&#xff0c;点击放大镜图层&#xff0c;按CtrlT更改尺寸&#xff1a; 选择…

【Ps问题】PS旋转功能会让图片乱飞的解决方法

问题描述&#xff1a;PS软件的旋转功能【R】每次旋转后图片都不在视口中心 解决办法&#xff1a; 首选项-工具-勾选过界 这样就会使旋转以窗口中心为圆心&#xff0c;不会乱飞

Photoshop:PS如何实现放大图片不模糊

Photoshop&#xff1a;如何实现放大图片不模糊 设备&#xff1a;Mac&#xff08;11.6&#xff09; 工具&#xff1a;Photoshop&#xff1a;cc2021 开发需求&#xff1a;实现放大图片不模糊 正如博主简介中写的&#xff1a;不会画画的游戏策划不是一个好的程序猿&#xff01…

ps图片放大模糊怎么变清晰?

ps图片放大模糊怎么变清晰&#xff1f;作为一名职场人士&#xff0c;或多或少都会用ps进行一些简单的操作&#xff0c;例如修改图片尺寸&#xff0c;更改图片的格式等等&#xff0c;我想大家在用ps修改图片尺寸大小时都遭遇过一个相同的问题&#xff0c;就是将图片放大后出现变…

ps放大图片后变模糊怎么办,如何变清晰?

ps放大图片后变模糊怎么办&#xff0c;如何变清晰&#xff1f;ps软件是最常用的图片编辑处理工具软件&#xff0c;当使用的图片尺寸太小时&#xff0c;我们可以利用ps软件来将图片的尺寸进行放大&#xff0c;但大家同样发现&#xff0c;如果图片的清晰度不是很高&#xff0c;放…

ps放大镜

ps放大镜 今天来教教大家如何做ps里的放大镜先看圆图。 1.我们需要拉一张图片进来&#xff0c;然后把图片复制一张&#xff0c;然后把背景图锁上&#xff0c;在把图层进行模糊化。点击滤镜 &#xff08;模糊 高斯模糊&#xff09;然后在把半径20。 点击锁定。 2.我们用椭圆工…

MATLAB泰勒级数展开

相信很多同学&#xff0c;在学习高等数学都经历过泰勒级数展开&#xff0c;感觉特别复杂与麻烦&#xff0c;下面我将给大家介绍一下如何用几行代码实现泰勒展开。 例&#xff1a; 1.麦克劳林级数前10项&#xff1a; syms x; >> f x/sqrt(1x^2); >> taylor(f,x…