solr的moreLikeThis实现“相似数据”功能
在我们使用网页搜索时,会注意到每一个结果都包含一个 “相似页面” 链接,单击该链接,就会发布另一个搜索请求,查找出与起初结果类似的文档。Solr 使用 MoreLikeThisComponent(MLT)和 MoreLikeThisHandler 实现了一样的功能。如上所述,MLT 是与标准 SolrRequestHandler 集成在一起的;MoreLikeThisHandler 与 MLT 结合在一起,并添加了一些其他选项,但它要求发布一个单一的请求。我将着重讲述 MLT,因为使用它的可能性更大一些。幸运的是,不需要任何设置就可以查询它,所以您现在就可以开始查询。
MLT 要求字段被储存或使用检索词向量,检索词向量以一种以文档为中心的方式储存信息。MLT 通过文档的内容来计算文档中关键词语,然后使用原始查询词语和这些新词语创建一个新的查询。提交新查询就会返回其他查询结果。所有这些都可以用检索词向量来完成:只需将 termVectors="true" 添加到 schema.xml 中的 <field> 声明。
1、solrconfig.xml配置
要想使用匹配相似首先在 solrconfig.xml 中配置 MoreLikeThisHandler
<requestHandler name="/mlt" class="solr.MoreLikeThisHandler">
</requestHandler>
2、managed-scheme配置
对需要作为相似度匹配字段的field添加 termVectors="true"
...
<field name="ds_topic_tags" type="strings" multiValued="true" termVectors="true" />
<field name="ds_class_tags" type="strings" multiValued="true" />
<field name="ds_total_size" type="plong" />
<field name="hit_count" type="plong" />
<field name="down_count" type="plong" />
<field name="id" type="string" indexed="true" required="true" stored="true"/>
<field name="meta_code" type="string" />
<field name="organization_id" type="string" />
<field name="organization" type="text_cjk" termVectors="true" />
<field name="title_cn" type="text_cjk" multiValued="false" termVectors="true" />
...
3、python代码
si = get_si()
siq = si.query(id=id).mlt('title_cn, ds_category, ds_topic_tags, ds_subject_tags', count=10, mintf=1, mindf=1).field_limit(
["id", "title_cn"])
results = siq.execute()
rm_ids = [r['id'] for r in results.more_like_these[id].docs]
r_m = []
for rid in rm_ids:
r_meta = Metadata.query.get(rid)
r_m.append(r_meta)
参考文献:
1、https://scorched.readthedocs.io/en/latest/query.html
3、https://lucene.apache.org/solr/guide/7_6/morelikethis.html
4、solr相似匹配
7、https://lucene.apache.org/solr/guide/7_6/morelikethis.html
solr的moreLikeThis实现“相似数据”功能的更多相关文章
- Solr教程--官方自带数据的三个练习及讨论翻译版本
Solr教程 在你开始之前 解压Solr 练习1:索引Techproducts示例数据 在SolrCloud模式下启动Solr 索引技术产品数据 基本搜索 练习1总结 练习2:修改架构和索引影片数据 ...
- 企业级搜索引擎Solr 第三章 索引数据(Indexing Data)[1]
转载:http://quweiprotoss.wap.blog.163.com/ Push data to Solr or have Solr pull it 尽管一个应用通过HTTP方式与Solr通 ...
- 实现android上解析Json格式数据功能
实现android上解析Json格式数据功能,该源码转载于安卓教程网的,http://android.662p.com ,个人感觉还不错的,大家可以看看一下吧. package com.practic ...
- 用NPOI实现导入导出csv、xls、xlsx数据功能
用NPOI实现导入导出csv.xls.xlsx数据功能 直接上代码 首先定义一个接口 如果需要直接操作文件的话,就自己在封装一次 然后定义csv类的具体实现 这个需要引入命名空间LumenWo ...
- Thinkphp5+PHPExcel实现批量上传表格数据功能
http://www.jb51.net/article/129262.htm 1.首先要下载PHPExcel放到vendor文件夹下,我的路径是:项目/vendor/PHPExcel/,把下载的PHP ...
- FPA笔记三 数据功能的识别
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://welkinhu.blog.51cto.com/447606/115477 ...
- 企业级搜索引擎Solr 第三章 索引数据(Indexing Data)[1] (转)
Index Data Author: David Smiley Eric Pugh 译者:Koala++ / 屈伟 在这一章中我们将了解如何将数据传入Solr.这个传入的过程称之为索引,尽管中间还包含 ...
- Solr json,xml等文件数据导入(添加索引)linux下操作
使用solr-5.3.1\example\exampledocs下的post.jar来完成数据导入 1.将想要导入的文件放在solr-5.3.1\example\exampledocs中,如aaa.x ...
- solr 4.8+mysql数据库数据导入 + mmseg4j中文全文索引 配置笔记
转载请标明出处:http://www.cnblogs.com/chlde/p/3768733.html 1.如何将solr部署,请参考之前的文章 2.按上述配置好后,在solr_home文件夹中,将包 ...
随机推荐
- BCR-ABL融合基因及检测
费城染色体 费城染色体(Philadelphia chromosome, Ph (or Ph') chromosome),或称费城染色体易位(Philadelphia translocation),是 ...
- 数组去重ES6
原文链接:https://juejin.im/post/5b17a2c251882513e9059231 1,去除简单类型 //ES6中新增了Set数据结构,类似于数组,但是 它的成员都是唯一的 ...
- Dubbo源码学习总结系列七---注册中心
Dubbo注册中心是框架的核心模块,提供了服务注册发现(包括服务提供者.消费者.路由策略.覆盖规则)的功能,该功能集中体现了服务治理的特性.该模块结合Cluster模块实现了集群服务.Dubbo管理控 ...
- [资料] 常见的IC芯片解密方法与原理解析!
其实了解芯片解密方法之前先要知道什么是芯片解密,网络上对芯片解密的定义很多,其实芯片解密就是通过半导体反向开发技术手段,将已加密的芯片变为不加密的芯片,进而使用编程器读取程序出来. 芯片解密所要具 ...
- python基础——对时间进行加减
在datetime模块中有一个timedelta这个方法,它代表两个datetime之间的时间差.. In [42]: datetime.datetime.now().strftime('%Y-%m- ...
- macOS BLAS LAPACK
/System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/Headers
- python全栈开发,Day42(Thread类的其他方法,同步锁,死锁与递归锁,信号量,事件,条件,定时器,队列,Python标准模块--concurrent.futures)
昨日内容回顾 线程 什么是线程? 线程是cpu调度的最小单位 进程是资源分配的最小单位 进程和线程是什么关系? 线程是在进程中的一个执行单位 多进程 本质上开启的这个进程里就有一个线程 多线程 单纯的 ...
- ckeditor富文本编辑器的使用和图片上传,复制粘贴图片上传
自动导入Word图片,或者粘贴Word内容时自动上传所有的图片,并且最终保留Word样式,这应该是Web编辑器里面最基本的一个需求功能了.一般情况下我们将Word内容粘贴到Web编辑器(富文本编辑器) ...
- ubuntu 18.04下Chromium设置为系统代理
前言 在ubuntu 18.04下挂上ss后firefox能直接上google了但是chromium上不去 会出现下面两种情况 # This site can't be reached xxxxxx ...
- RabbitMQ-Window安装(一)
1.登录RabbitMq官网http://www.rabbitmq.com/ 2.点击Get Started 3.点击Download+Installation 4.找到Windows,点击 5.点击 ...