zoukankan      html  css  js  c++  java
  • Solr相关概念详解:SolrRequestHandler

    转自:http://www.cnblogs.com/chenying99/archive/2012/07/24/2607339.html

    1. standard (StandardRequestHandler)

    标准查询分析器使用SolrQuerySyntax通过q参数来指定查询,它要求被很好的组织(Formed),或返回一个异常。对于精确查询和任意复杂的查询,使用Standard效果很好。
     
    2. dismax ( DismaxRequestHandler )
    dismax查询分析器是一个为用户提供的更宽容的查询分析器,查询字符串直接传递一个q参数。其他参数可以很容易搜索横跨多个Field,使用Disjunctions和不严格的短语查询返回高度相关的结果。
     
    这里的“部分匹配”,是指返回的结果没有完全匹配所有搜索的关键词。

    DisMaxQParserPluign里有一个参数mm(Minimum 'should' match),设置整个搜索关键词中最小需要匹配的数量。这里给出例子

    "2" : 无论关键词一共有多少,doc最少需要匹配2个

    "75%" : doc最少需要匹配75%的关键词,关键词个数向下取整。

    "2<-25%" : 关键词少于3个的时候,doc需要全部匹配;大于等于3个的时候,doc最少需要匹配75%

    "2<-1 5<80%" : 关键词少于3个的时候,需要全部匹配;3-5个的时候,只能有一个不匹配;大于5个的时候,最少需要匹配80%

    默认mm为100%,也就是所有关键词都必须有匹配。即使在schema.xml里设置operator为OR,也要受到mm的限制,也就是无法全部匹配关键词的doc都不在结果集中。

    3. /mlt (MoreLikeThisHandler)

    MoreLikeThis查询,又叫以文找文。
     

    4. /dataimport (DataImportHandler)

    数据导入请求处理,需要配置相应的数据源配置文件:

    <str name="config">data-config.xml</str>

    5. /update (XmlUpdateRequestHandler)

    更新Document请求处理
     
    6. /analysis (AnalysisRequestHandler)
    分析请求处理
     
     
    standard和Dismax的区别
    • Standard要求输入的查询内容符合SolrQuerySyntax查询语法,特殊字符要进行转义。如果不符合语法,会报错。Dismax查询就不会存在这样的问题,对于用户的输入始终都不会报错。
    • 如何想在title和Subject两个Field中查找包含Superman的索引?
      • The standard request handler uses SolrQuerySyntax for q:
      • q=title:superman subject:superman
      • Using the dismax request handler, specify the query fields using the qf param.
      • q=superman&qf=title subject
    • 如何让Title Field中的得分权重比Subject Field中的高?
      • For the standard request handler, "boost" the clause on the title field:
      • q=title:superman^2 subject:superman
      • Using the dismax request handler, one can specify boosts on fields in parameters such as qf:
      • q=superman&qf=title^2 subject
  • 相关阅读:
    构造函数析构函数为什么没有返回值?
    std::tr1::shared_ptr 使用的一点体会
    C++完美实现Singleton模式
    为什么C++中空类和空结构体大小为1?
    同时判断CPU是大端还是小端完全实现
    优先级反转
    linux sed 批量替换字符串
    禁掉Apache web server签名 How to turn off server signature on Apache web server
    Python中用format函数格式化字符串的用法
    Eclipse (indigo) 中安装jdk包并运行Maven
  • 原文地址:https://www.cnblogs.com/renwei/p/4218832.html
Copyright © 2011-2022 走看看