Solr RecommendationComponent-基于某些过滤器构建字典吗?

时间:2019-02-13 18:40:56

标签: solr lucene

我当前正在使用solr建议组件来实现自动完成功能。现在,根据用户权限以及我所在的网站区域,我想向用户提供不同的建议。现在,我认为仅考虑某些显式条目即可构建字典(即:dict1仅从type = t1和locale = en,dict 2在type = t1和locale = de,dict3在type处构建的条目轻松构建) = t2和locale = en等)。但是我不知道该在哪里做这样的事情。系统正在运行solr 4.6。

您知道任何解决方案或可能的解决方法吗?

我目前无法在系统上更新solr或更改除solr配置之外对文档编制索引的方式,因此很遗憾,我无法使用上下文过滤。如果没有其他效果,这将是万不得已的方法。

1 个答案:

答案 0 :(得分:0)

由于您使用的是旧的 Solr 4.6 ,它没有上下文过滤功能,甚至没有多个词典,因此您需要为每个条目指定您的词典,也就是SearchComponent

<searchComponent class="solr.SpellCheckComponent" name="suggest-en">
   <lst name="spellchecker">
-->
<!--
<str name="name">suggest</str>
<str name="classname">org.apache.solr.spelling.suggest.Suggester</str>
<str name="lookupImpl">org.apache.solr.spelling.suggest.tst.TSTLookup</str>
<str name="field">name</str>  <!-- the indexed field to derive suggestions from
<float name="threshold">0.005</float>
<str name="buildOnCommit">true</str>
<str name="sourceLocation">american-english</str>
--> </lst>
</searchComponent>

然后定义请求处理程序,如下所示:

<requestHandler class="org.apache.solr.handler.component.SearchHandler"
name="/suggest-en">
   <lst name="defaults">
      <str name="spellcheck">true</str>
      <str name="spellcheck.dictionary">suggest-en</str>
      <str name="spellcheck.onlyMorePopular">true</str>
      <str name="spellcheck.count">5</str>
      <str name="spellcheck.collate">true</str>
   </lst>
   <arr name="components">
      <str>suggest</str>
   </arr>
</requestHandler>

此处的解决方法是,您需要指定suggest-ensuggest-de以及所有其他类型的请求处理程序,然后指出客户端取决于其配置文件的正确请求处理程序