【问题标题】:Solr Request Handlers and Query ParsersSolr 请求处理程序和查询解析器
【发布时间】:2011-07-13 09:15:22
【问题描述】:

我是 Solr 的新手。请帮我解决以下问题:

  1. 请求处理程序和查询解析器有什么区别?
    我在想,当通过 solr 中的 URL 发送查询时,首先使用查询解析器解析查询。然后请求处理程序获取解析的查询并根据请求处理程序参数搜索并呈现响应。这是正确的吗?

  2. 什么是 Solr 中的默认查询解析器和默认请求处理程序?

  3. 参数 deftype 用于为请求处理程序指定解析器和 qt 对吗? 我写了这个查询
    select?q=features:power%20features:latency&deftype=dismax 这有效,但 select?q=features:power%20features:latency&qt=dismax 无效。

这是我的requestHandler

<requestHandler name="dismax" class="solr.SearchHandler">
 <lst name="defaults">
  <str name="defType">dismax< /str>
  <str name="echoParams">explicit< /str>
  <float name="tie">0.01< /float>
  <str name="qf">text^0.5 features^1.0 name^1.2 sku^1.5 id^10.0 manu^1.1 cat^1.4< /str>
  <str name="pf">text^0.2 features^1.1 name^1.5 manu^1.4 manu_exact^1.9< /str>
  <str name="bf">popularity^0.5 recip(price,1,1000,1000)^0.3< /str>
  <str name="fl">id,name,price,score< /str>
  <str name="mm">2<-1 5<-2 6<90%< /str>
  <int name="ps">100< /int>
  <str name="q.alt">*:*< /str>
 <!--  example highlighter config, enable per-query with hl=true
  -- >
  < str name="hl.fl">text features name</str>
 <!--  for this field, we want no fragmenting, just highlighting
  -- >
  < str name="f.name.hl.fragsize">0< /str>
 <!--  instructs Solr to return the field itself if no query terms are
          found
  -- >
  <str name="f.name.hl.alternateField">name< /str>
  <str name="f.text.hl.fragmenter">regex< /str>
 <!--  defined below
  -->
  < /lst>
</requestHandler>

【问题讨论】:

    标签: solr


    【解决方案1】:

    默认请求处理程序是 SolrConfig.xml 中带有 default="true" 参数的请求处理程序(SearchHandler,如果您没有更改)。

    请求处理程序处理请求,因此它是每个请求的起点,这意味着请求处理程序使用/调用查询解析器(由 url 指定的解析器或默认解析器)作为其第一步。

    你想得到:
    1. 以“电源延迟”为词组的文档?
    2. 或者在文档中的任何位置都包含这两个术语的文档?
    3. 或者带有这些术语的文档?

    试试这样:
    1. 选择?q=features:"电源延迟"&qt=dismax
    2. select?q=features:power+features:latency&qt=dismax&mm=2
    3. select?q=features:power+features:latency&qt=dismax&mm=1

    更多关于DisMaxQParserPlugin的信息。

    【讨论】:

    • 但是为什么不选择?q=features:power%20features:latency&qt=dismax 工作。我的 Solr 配置文件的默认值是 mm=2。我在 2 个文档中有 6 个具有权力的文档和其余 4 的延迟。它们都没有功率和延迟。因此,使用 deftype=dismax 它给了我 6 个正确的文档。但是当我使用 qt=dismax 时,它没有显示任何结果。默认情况下,mm=2 !!!!!!那么deftype和qt有什么区别???
    • 还有一个问题。当我们能够同时给出 deftype=dismax 和 qt=dismax 时,这意味着 dismax 既是解析器又是请求处理程序。对吗?我可以知道 Solr 中的其他解析器是什么,还有请求处理程序。
    • 请从 solrconfig.xml 发布您的
    • 由于字符数超过,我将其发布为答案!
    • qt vs defType 不是偏好问题,而是目的问题。 "qt" 用于选择 requestHandler 实例。 "defType" 告诉 requestHandler 你希望默认 QParser 为 "q" 参数是什么
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-24
    • 1970-01-01
    相关资源
    最近更新 更多