SOLR5.5 More Like This 相似文档

今天我将给大家介绍下SOLR5.5的More Like This 功能

  • More Like This 的简介
  • More Like This 配置
  • More Like This 的代码
  • More Like This 参数说明
  • More Like This 的问题

More Like This 的简介

solr 提供了MoreLikeThis 功能,也就是相似查询的功能。Solr 使用 MoreLikeThisComponent(MLT)和 MoreLikeThisHandler 实现了该功能。如上所述,MLT 是与标准 SolrRequestHandler 集成在一起的;MoreLikeThisHandler 与 MLT 结合在一起,并添加了一些其他选项,但它要求发布一个单一的请求。我将着重讲述 MLT,因为使用它的可能性更大一些。

More Like This 配置

solr 的MoreLikeThis功能的配置相当简单,只需要在solrconfig.xml中添加如下代码段就可使用该功能。

<!-- Solr Morelikethis 文件相似度搜索用到此配置 -->
<requestHandler name="/mlt" class="solr.MoreLikeThisHandler" />

More Like This 的代码

SolrClient client new HttpSolrClient(url); SolrQuery query = new SolrQuery(); query.setRequestHandler("/" + MoreLikeThisParams.MLT); query.set(MoreLikeThisParams.DOC_COUNT, num <= 0 ? 5 : num);// 返回的相关文档数 // 长度低于此参数的词语不考虑,对中文来讲,单字无意义 query.set(MoreLikeThisParams.MIN_WORD_LEN, 2); // 返回的与一段文本最相关的关键词个数。太大会导致查询性能下降 query.set(MoreLikeThisParams.MAX_QUERY_TERMS, 10); // 查询结果不包含原始文档 query.set(MoreLikeThisParams.MATCH_INCLUDE, false); // 如果一个词在所有文本中出现次数小于1,则不考虑 query.set(MoreLikeThisParams.MIN_DOC_FREQ, 1); // 如果一个词在原始文本中出现次数小于2,则不考虑 query.set(MoreLikeThisParams.MIN_TERM_FREQ, 2); // 执行相似匹配的field 这里只根据标题推荐 query.set(MoreLikeThisParams.SIMILARITY_FIELDS,"title"); query.setQuery("id:11"); query.setRows(5); QueryResponse rsp = client.query(query); SolrDocumentList list = rsp.getResults(); for (SolrDocument document : list){ Sysem.out.println(document.getFieldValue("id")+":"+document.getFieldValue("title")); }
此处的url即,搜索服务器的访问url ,
例如http://127.0.0.1/solr/example
此处的example 是你所建立的core的名称。

More Like This 的参数说明

参数说明
id文档主键,或使用其他唯一键;
mlt在查询时,打开/关闭 MoreLikeThisComponent 的布尔值。真假
fl需要返回的字段
mtl.fl根据哪些字段判断相似度
mlt.mindf最小文档频率,所在文档的个数小于这个值的词将不用于相似判断
mlt.mintf最小分词频率,在单个文档中出现频率小于这个值的词将不用于相似判断
mlt.count返回相似文章个数

上述代码中有些参数已经无效。下面是官方文档中列举的参数
这里写图片描述

More Like This 的问题

  • MoreLikeThisParams.DOC_COUNT 在实际应用中发现这个参数已经无效了,在我使用的前期版本中,比如3.6,4.4 这个参数还是好用的,具体那个版本开始这个参数无效的,我没有去翻阅官方文档。替代方案:query.setRows(5) ,通过在query中设置返回行数来限制返回记录条数
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值