我当前正在使用solr建议组件来实现自动完成功能。现在,根据用户权限以及我所在的网站区域,我想向用户提供不同的建议。现在,我认为仅考虑某些显式条目即可构建字典(即:dict1仅从type = t1和locale = en,dict 2在type = t1和locale = de,dict3在type处构建的条目轻松构建) = t2和locale = en等)。但是我不知道该在哪里做这样的事情。系统正在运行solr 4.6。
您知道任何解决方案或可能的解决方法吗?
我目前无法在系统上更新solr或更改除solr配置之外对文档编制索引的方式,因此很遗憾,我无法使用上下文过滤。如果没有其他效果,这将是万不得已的方法。
答案 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-en
,suggest-de
以及所有其他类型的请求处理程序,然后指出客户端取决于其配置文件的正确请求处理程序