如何筛选Solr自动完成/建议?

如何筛选Solr自动完成/建议?,solr,autocomplete,solrnet,solr-schema,solrconfig,Solr,Autocomplete,Solrnet,Solr Schema,Solrconfig,我已经实现了一个Solr suggest处理程序来处理来自我的应用程序的自动完成建议。但是,我需要能够根据用户权限过滤这些结果。本质上,这可以确保返回的字段之一与密钥(例如用户名)匹配 我的模式如下所示(自动完成字段): 以及SolrConfig中的建议处理程序: !--请求处理程序返回提前键入建议--> 明确的 埃迪斯马克斯 10 名字,姓氏,地址1,客户ID,分数 名称建议^30名称建议边缘^50.0 名称建议建议边缘^50.0 假的 姓名建议 分数描述 分数描述 如何过滤来自此处理程

我已经实现了一个Solr suggest处理程序来处理来自我的应用程序的自动完成建议。但是,我需要能够根据用户权限过滤这些结果。本质上,这可以确保返回的字段之一与密钥(例如用户名)匹配

我的模式如下所示(自动完成字段):


以及SolrConfig中的建议处理程序:

!--请求处理程序返回提前键入建议-->
明确的
埃迪斯马克斯
10
名字,姓氏,地址1,客户ID,分数
名称建议^30名称建议边缘^50.0
名称建议建议边缘^50.0
假的
姓名建议
分数描述
分数描述

如何过滤来自此处理程序的结果(最好不必在内存使用者端进行过滤)?

您可以像过滤搜索一样过滤建议。使用cfq而不是Solr fq参数

建议.cfq 上下文筛选器查询,用于根据上下文字段筛选建议(如果建议者支持)

注:

上下文筛选(suggest.cfq)目前仅受 分析固定查找工厂和混合Infixlookupffactory,仅 由文档*字典支持时。所有其他实现都将 返回未筛选的匹配项,如同未请求筛选一样


Source

您可以像过滤搜索一样过滤建议。使用cfq而不是Solr fq参数

建议.cfq 上下文筛选器查询,用于根据上下文字段筛选建议(如果建议者支持)

注:

上下文筛选(suggest.cfq)目前仅受 分析固定查找工厂和混合Infixlookupffactory,仅 由文档*字典支持时。所有其他实现都将 返回未筛选的匹配项,如同未请求筛选一样

来源

<!-- suggest fields --> 
<field name="name_suggest" type="text_suggest" indexed="true" stored="false" multiValued="true" /> 
<field name="name_suggest_suggest_edge" type="text_suggest_edge" indexed="true" stored="false" multiValued="true" /> 
<field name="name_suggest_suggest_ngram" type="text_suggest_ngram" indexed="true" stored="false" multiValued="true" /> 
<field name="name_suggest_s" type="alphaNumericSort" indexed="true" stored="false" multiValued="true" /> 

<!-- copy fields -->    
<copyField source="firstName" dest="name_suggest" />
<copyField source="firstName" dest="name_suggest_suggest_edge" />
<copyField source="firstName" dest="name_suggest_suggest_ngram" />
<copyField source="firstName" dest="name_suggest_s" />    
<copyField source="lastName" dest="name_suggest" />
<copyField source="lastName" dest="name_suggest_suggest_edge" />
<copyField source="lastName" dest="name_suggest_suggest_ngram" />
<copyField source="lastName" dest="name_suggest_s" />     
<copyField source="id" dest="customerID" />
!-- request handler to return typeahead suggestions -->
<requestHandler name="/suggest" class="solr.SearchHandler">
   <lst name="defaults">
      <str name="echoParams">explicit</str>
      <str name="defType">edismax</str>
      <str name="rows">10</str>
      <str name="fl">firstName, lastName, address1, customerID,score</str>
      <str name="qf">name_suggest^30 name_suggest_suggest_edge^50.0</str>
      <str name="pf">name_suggest_suggest_edge^50.0</str>
      <str name="group">false</str>
      <str name="group.field">name_suggest_s</str>
      <str name="sort">score desc</str>
      <str name="group.sort">score desc</str>
   </lst>
</requestHandler>