我已经实现了一个Solr建议处理程序来处理来自我的应用程序的自动填充建议。但是,我需要能够根据用户权限筛选这些结果。实质上,这可以确保其中一个返回的字段匹配一个键(例如用户名)。如何过滤Solr Autocomplete/Suggest?
我的模式是这样的(自动完成字段):
<!-- 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" />
而且在SolrConfig的建议处理程序:
!-- 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>
如何过滤从该处理程序来的结果(最好不必须在内存消费者方面做到这一点)?