参考文档:

MoreLikeThis

MoreLikeThisHandler

在solr中有两种方式实现MoreLikeThis:
第一种:SearchHandler中的MoreLikeThisComponent,MoreLikeThis以组件的身份出现,适于简单应用。
第二种:MoreLikeThisHandler,MoreLikeThis作为一个单独的Handler来处理,可以应用过滤等较复杂操作

1、采用相似查询的field的存储方式最好采用TermVectors方式,如果field没有采用TermVectors方式,MoreLikeThis将会从store存储中生成terms。

 <field name="cat" ... termVectors="true" />

2、参数说明:

  • mlt.fl    :设置相似查询字段,最好采用TermVectors存储。
  • mlt.mintf   :最小分词频率,源文档中小于该频率的分词将被忽略掉。tf:分词后的词在该文档中的频率
  • mlt.mindf   : 最小文档频率,该词所在文档的个数小于这个值时将不用于相似判断。df:该词所在文档的个数。
  • mlt.minwl :词的最小长度,当词的长度小于该值时不用于相似判断。
  • mlt.maxwl  :词的最大长度,当词的长度大于该值时不用于相似判断。
  • mlt.maxqt  :构造相似查询的terms的最大数量。
  • mlt         : true ,开启相似查询。
  • mlt.count   :为每一个相似查询结果返回指定数量的相似文档。
  • mlt.boost :相似查询是否开启加权功能。true/false
  • mlt.qf     :相似查询field字段加权设置。

    如:mlt.qf=text^0.5 features^1.0 name^1.2

   或者:

       <str name="mlt.qf">
text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4
title^10.0 description^5.0 keywords^5.0 author^2.0 resourcename^1.0
</str>

第一种方法:morelikeThis组件为response中的每一个document返回相似查询文档,也许这应该叫做"MoreLikeThese"。

例子:

http://localhost:8983/solr/select?q=apache&mlt=true&mlt.fl=manu,cat&mlt.mindf=1&mlt.mintf=1&fl=id,score

第二种方法:当你只需要相似查询的相关信息时,可以使用MoreLikeThisHandler。

MoreLikeThisHandler具有以下参数:

rows

控制返回结果的最大数量

mlt.match.include

结果集中是否包含原始的文档

mlt.match.offset

By default, the MoreLikeThis query operates on the first result for 'q'

mlt.interestingTerms

值:"list", "details", "none" --显示相似查询中使用到的相关的terms。这些terms时最高评分的terms。如果选择'details',将会显示每个term的权值。

见MoreLikeThis额外的输入参数。

MoreLikeThisHandler同样也可以使用ContentStream来查找相似文档。它将会从发送过来的文本中抽取相关terms。

示例:

  <requestHandler name="/mlt" class="solr.MoreLikeThisHandler">
<lst name="defaults">
<str name="mlt.fl">title</str>
<str name="mlt.mintf">1</str>
<str name="mlt.minwl">2</str>
<int name="rows">3</int>
</lst>
</requestHandler>
  <requestHandler name="/mlt" class="solr.MoreLikeThisHandler">
<lst name="defaults">
<str name="wt">json</str>
<str name="fl">id,dept_id,dem_name,dem_dept_id,dem_desc</str>
<str name="mlt.qf">
dem_name^2.0 dem_desc^1.0
</str>
<str name="mlt.fl">dem_name,dem_desc</str>
<str name="mlt.match.include">false</str>
<str name="mlt.mintf">1</str>
<str name="mlt.mindf">1</str>
<str name="mlt.minwl">2</str>
<int name="rows">3</int>
</lst> </requestHandler>

其中<lst name="defaults"> 时查询时默认的参数值,可有可无。

简单例子:

http://localhost:8983/solr/mlt?q=id:UTF8TEST&mlt.fl=manu,cat&mlt.mindf=1&mlt.mintf=1

http://localhost:8983/solr/mlt?q=id:UTF8TEST&mlt.fl=manu,cat&mlt.mindf=1&mlt.mintf=1&mlt.match.include=false

http://localhost:8983/solr/mlt?q=id:SP2514N&mlt.fl=manu,cat&mlt.mindf=1&mlt.mintf=1&fq=inStock:true&mlt.interestingTerms=details

使用ContentStreams:

If you post text in the body, that will be used for similarity. Alternatively, you can put the posted content in the URL using something like:

http://localhost:8983/solr/mlt?stream.body=electronics%20memory&mlt.fl=manu,cat&mlt.interestingTerms=list&mlt.mintf=0

If remoteStreaming is enabled, you can find documents similar to the text on a webpage:

http://localhost:8983/solr/mlt?stream.url=http://lucene.apache.org/solr/&mlt.fl=manu,cat&mlt.interestingTerms=list&mlt.mintf=0

solr 相似查询-MoreLikeThis的更多相关文章

  1. Solr 排除查询

    前言 solr排除查询也就是我们在数据库和程序中经常处理的不等于,solr的语法是在定语前加[-].. StringBuilder sbHtml=new StringBuilder(); shBhtm ...

  2. 【solr】之solr界面查询返回距离并排序

    使用solr界面查询 {!geofilt}距离函数 star:[4 TO 5]星级排序 geodist() desc 距离排序 pt :31.221717,121.580891 sfield:loca ...

  3. 【转】Solr客户端查询参数总结

    今天还是不会涉及到.Net和数据库操作,主要还是总结Solr 的查询参数,还是那句话,只有先明白了solr的基础内容和查询语法,后续学习solr 的C#和数据库操作,都是水到渠成的事.这里先列出sol ...

  4. 如何大幅优化solr的查询性能(转)

    提升软件性能,通常喜欢去调整各种启动参数,这没有多大意义,小伎俩. 性能优化要从架构和策略入手,才有可能得到较大的收益 Solr的查询是基于Field的,以Field为基本单元,例如一个文章站要索引 ...

  5. solr facet查询及solrj 读取facet数据[转]

    solr facet查询及solrj 读取facet数据 | 所属分类:solr facet solrj 一.   Facet 简介 Facet 是 solr 的高级搜索功能之一 , 可以给用户提供更 ...

  6. solr特点五: MoreLikeThis(查找相似页面)

    在 Google 上尝试一个查询,您会注意到每一个结果都包含一个 “相似页面” 链接,单击该链接,就会发布另一个搜索请求,查找出与起初结果类似的文档.Solr 使用MoreLikeThisCompon ...

  7. Solr高级查询Facet

    一.什么是facet solr种以导航为目的的查询结果成为facet,在用户查询的结果上根据分类增加了count信息,然后用户根据count信息做进一步搜索. facet主要用于导航实现渐进式精确搜索 ...

  8. Solr页面查询各个字段参数解释

    q:查询的关键字,此参数最为重要,例如,q=id:1,默认为q=*:*,类似于sql中的where 1=1. fq(filter query):过滤查询,提供一个可选的筛选器查询.返回在q查询符合结果 ...

  9. [solr] - defType - 查询权重排序

    Solr的defType有dismax/edismax两种,这两种的区别,可参见:http://blog.csdn.net/duck_genuine/article/details/8060026 下 ...

随机推荐

  1. NetBeans IDE 7.4 Beta版本build JavaFX时生成的可执行jar包执行时找不到依赖的jar包

    现象,执行时抛出java.lang.ClassNotFoundException异常: Executing E:\secondegg\secondegg-reversi\dist\run8022211 ...

  2. POP3&SMTP&IMAP

    [POP3&SMTP&IMAP] IMAP是什么? IMAP,即Internet Message Access Protocol(互联网邮件访问协议),您可以通过这种协议从邮件服务器上 ...

  3. Deep Learning 学习笔记——第9章

    总览: 本章所讲的知识点包括>>>> 1.描述卷积操作 2.解释使用卷积的原因 3.描述pooling操作 4.卷积在实践应用中的变化形式 5.卷积如何适应输入数据 6.CNN ...

  4. C#判断当前操作系统

    private OperatingSystem os = System.Environment.OSVersion; os.Version.Major.ToString(); ) { //Win7系统 ...

  5. 《面向对象程序设计》第二次作业(1)(A+B问题)

    作业记录: 问题描述与代码已上传github仓库object-oriented文件夹下 题目一览 Calculate a + b and output the sum in standard form ...

  6. dbcp 是什么

    Many Apache projects support interaction with a relational database. Creating a new connection for e ...

  7. C++、GDAL创建shapefile文件

    源代码网址:http://download.csdn.net/detail/ivanljf/5834823 一.先贴出第一段代码: #include "ogrsf_frmts.h" ...

  8. 解决ie6不支持position: fixed;导致无法滚动的办法

    <div id="im" style="top: 100px; position: fixed; left: 5px; border: 3px solid #006 ...

  9. Maven配置文件说明

    <projectxmlns="http://maven.apache.org/POM/4.0.0 "       xmlns:xsi="http://www.w3. ...

  10. c++中智能输出文件

    首先我们要为每一时间步,设置一个文件名: ] = "; itoa(time,timestr,); std::string s; s += timestr; std::string path ...