【问题标题】:DSE CQL Query for Solr SuggestorSolr Suggestor 的 DSE CQL 查询
【发布时间】:2023-04-04 02:23:01
【问题描述】:

我使用的是 DSE 5.0.1 版本。之前我们使用构面查询来显示搜索建议。出于性能原因,寻找其他替代方案来获取建议并找到 solr searchSuggester 组件。但我找不到从 CQL 查询中使用建议器组件的示例。它可能对吗?任何人都可以帮我解决这个问题。 提前致谢。

【问题讨论】:

    标签: solr datastax-enterprise cassandra-3.0 autosuggest search-suggestion


    【解决方案1】:

    是的,这是可能的,而且相对容易——您只需要了解如何将要放入生成的solrconfig.xml 的 XML 映射到用于配置的 JSON 中。

    例如,我们想要配置建议器以建议来自字段 title 的数据,并使用来自 rating 字段的额外权重。根据Solr documentation,XML 部分应如下所示:

      <searchComponent class="solr.SuggestComponent" name="suggest">
        <lst name="suggester">
          <str name="name">titleSuggester</str>
          <str name="lookupImpl">AnalyzingInfixLookupFactory</str>
          <str name="dictionaryImpl">DocumentDictionaryFactory</str>
          <str name="suggestAnalyzerFieldType">TextField</str>
          <str name="field">title</str>
          <str name="weightField">rating</str>
          <str name="buildOnCommit">false</str>
          <str name="exactMatchFirst">true</str>
          <str name="contextField">country</str>
        </lst>
      </searchComponent>
      <requestHandler class="solr.SearchHandler" name="/suggest">
        <arr name="components">
          <str>suggest</str>
        </arr>
        <lst name="defaults">
          <str name="suggest">true</str>
          <str name="suggest.count">10</str>
        </lst>
      </requestHandler>
    

    在CQL中,会被转换

    ALTER SEARCH INDEX CONFIG ON table ADD 
      searchComponent[@name='suggest',@class='solr.SuggestComponent'] 
      WITH  $$ {"suggester":[{"name":"titleSuggester"}, 
       {"lookupImpl":"AnalyzingInfixLookupFactory"}, 
       {"dictionaryImpl":"DocumentDictionaryFactory"},
       {"suggestAnalyzerFieldType":"TextField"}, 
       {"field":"title"}, {"weightField":"rating"}, 
       {"buildOnCommit":"false"}, {"exactMatchFirst":"true"},
       {"contextField":"country"}]} $$;
    
    ALTER SEARCH INDEX CONFIG ON table ADD 
      requestHandler[@name='/suggest',@class='solr.SearchHandler'] 
      WITH  $$ {"defaults":[{"suggest":"true"}, 
        {"suggest.count":"10"}],"components":["suggest"]} $$;
    

    之后别忘了执行:

    RELOAD SEARCH INDEX ON table;
    

    你的推荐人会工作的。在我的示例中,应该明确构建建议者的索引,因为库存不会经常更改。这是通过 HTTP 调用完成的,如下所示:

    curl 'http://localhost:8983/solr/keyspace.table/suggest?suggest=true&suggest.dictionary=titleSuggester&suggest.q=Wat&suggest.cfq=US&wt=json&suggest.build=true&suggest.reload=true'
    

    但是您可以通过将buildOnCommit 设置为true 来控制它。或者您可以将其配置为在启动时构建建议索引等 - 请参阅 Solr 的文档。

    完整示例为here - 这是电子商务应用程序的示例。

    【讨论】:

      猜你喜欢
      • 2017-04-15
      • 2015-08-09
      • 1970-01-01
      • 2017-03-06
      • 2017-11-01
      • 1970-01-01
      • 2016-12-29
      • 2014-05-06
      • 2013-12-28
      相关资源
      最近更新 更多