参考文档:

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. Django中如何使用django-celery完成异步任务2(转)

    原文链接: http://www.weiguda.com/blog/74/ 在上一篇博文中, 我们介绍了如何在开发环境中使用Celery. 接下来我们介绍一下如何在部署环境使用Celery. 1. 简 ...

  2. 文本读写vs二进制读写

    [文本读写vs二进制读写] 在学习C语言文件操作后,我们都会知道打开文件的函数是fopen,也知道它的第二个参数是 标志字符串.其中,如果字符串中出现'b',则表明是以打开二进制(binary)文件, ...

  3. SQLCONNECTION使用HTTP通信协议和中间件连接

    SQLCONNECTION支持TCP/IP和HTTP两种通信协议和中间件连接.一般地,默认情况下使用TCP/IP协议. HTTP 协议的一个非常重要的优势在于穿越防火墙. SQLCONNECTION使 ...

  4. Java环境搭建及语言基础

    JRE和JDK JRE:Java Runtime Environment,java运行环境. JDK:Java Development Kit,java开发工具包. 使用JDK开发java程序,交给J ...

  5. HDU 3920Clear All of Them I(状压DP)

    HDU 3920   Clear All of Them I 题目是说有2n个敌人,现在可以发n枚炮弹,每枚炮弹可以(可以且仅可以)打两个敌人,每一枚炮弹的花费等于它所行进的距离,现在要消灭所有的敌人 ...

  6. class DelegatingFilterProxy

    /** * Proxy for a standard Servlet Filter, delegating to a Spring-managed bean that * implements the ...

  7. nginx打开目录游览功能

    #开启索引功能 location / { autoindex on; autoindex_exact_size off; autoindex_localtime on; } #别名目录location ...

  8. 如何解除Windows XP的IIS连接数限制

    方法一: 开始 - 设置 - 控制面板 - 管理工具 - Internet 信息服务 - 默认网站 - 右键属性,把“网站”选项卡中“连接超时”下的复选框"保持HTTP连接"前的勾 ...

  9. 利用HTML5开发Android(4)---HTML5本地存储之Web Storage

    Web Storage是HTML5引入的一个非常重要的功能,可以在客户端本地存储数据,类似HTML4的cookie,但可实现功能要比cookie强大的多,cookie大小被限制在4KB,Web Sto ...

  10. Android 图标上面添加提醒使用开源UI类库 Viewbadger

    Viewbadger 1.BadgeView主要是继承了TextView,所以实际上就是一个TextView,底层放了一个label,可以自定义背景图,自定义背景颜色,是否显示,显示进入的动画效果以及 ...