【问题标题】:Solr 7.2 suggester contextField filter returning no resultsSolr 7.2 建议者 contextField 过滤器没有返回结果
【发布时间】:2019-12-21 22:51:58
【问题描述】:

我正在尝试使用 Solr 7.2 中的 contextField 进行过滤。在 solrconfig.xml 我有以下内容:

<searchComponent name="suggest" class="solr.SuggestComponent">
   <lst name="suggester">
      <str name="name">suggest_artist</str>
      <str name="lookupImpl">BlendedInfixLookupFactory</str>
      <str name="dictionaryimpl">DocumentDictionaryFactory</str>
      <str name="field">artist</str>
      <str name="weightField">monthly_dlds</str>
      <str name="contextField">territory</str>
      <str name="queryAnalyzerFieldType">phrase_suggest</str>
      <str name="suggestAnalyzerFieldType">text_suggest</str>
      <str name="buildOnStartup">true</str>
      <str name="buildOnCommit">true</str>
      <str name="storeDir">suggest_a</str>
      <str name="indexPath">suggest_a</str>
      <str name="highlight">false</str>
   </lst>
<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
  <lst name="defaults">
      <str name="echoParams">all</str>
      <str name="wt">json</str>
      <str name="indent">true</str>
    <str name="suggest">true</str>
    <str name="suggest.count">10</str>
  </lst>
  <arr name="components">
    <str>suggest</str>
  </arr>
</requestHandler>

在我的架构中,领域字段配置如下:

<field name="territory" type="string" indexed="true" stored="true" multiValued="true"/>

区域字段是多值的,包含区域(['US'、'CA'等])。

我按如下方式运行建议查询:

http://localhost:8983/solr/test_suggester/suggest?suggest.dictionary=suggest_artist&suggest.q=m&suggest.cfq=US

我收到回复,但没有找到任何建议。

{
  "responseHeader":{
    "zkConnected":true,
    "status":0,
    "QTime":0,
    "params":{
      "echoParams":"all",
      "indent":"true",
      "suggest.q":"m",
      "suggest.count":"10",
      "suggest":"true",
      "suggest.dictionary":"suggest_artist",
      "wt":"json",
      "suggest.cfq":"US"}},
  "suggest":{"suggest_artist":{
      "m":{
        "numFound":0,
        "suggestions":[]}}}}

如果没有Suggest.cfg=US,我会得到一个建议列表(我已经检查了应该通过使用fq=territory:US 搜索返回的项目)。我尝试使用单值字段,同时使用布尔值(例如:us_terr:true)和字符串字段类型(us_terr:"t"),结果是一样的。建议器位于 SolrCloud 上自己的单独集合中,只有一个分片。

【问题讨论】:

    标签: solr solrcloud


    【解决方案1】:

    问题在于 dictionaryImpl 拼写错误。

    &lt;str name="dictionaryimpl"&gt;DocumentDictionaryFactory&lt;/str&gt;

    应该是:

    &lt;str name="dictionaryImpl"&gt;DocumentDictionaryFactory&lt;/str&gt;

    这意味着它使用了默认的字典实现,HighFrequencyDictionaryFactory,它不支持上下文过滤。

    【讨论】:

      猜你喜欢
      • 2016-08-30
      • 2021-11-17
      • 1970-01-01
      • 1970-01-01
      • 2013-12-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多