Solr Suggester组件插件

Solr Suggester组件插件,solr,autocomplete,lucene,search-suggestion,Solr,Autocomplete,Lucene,Search Suggestion,我为Solr创建了一个插件(版本6.3),它添加了一个权限层,使用数据库查询过滤检索到的文档(例如:ID为2的用户没有权限查看ID为1的文档);由于定义用户是否具有权限的逻辑需要Solr中没有索引的字段,因此我需要签入数据库 为了实现这一点,我创建了一个查询解析器(称为DocumentsByUserParser,它扩展了solrconfig.xml中定义的类QParserPlugin),如下所示: <requestHandler name="/suggest" class="solr.Se

我为Solr创建了一个插件(版本6.3),它添加了一个权限层,使用数据库查询过滤检索到的文档(例如:ID为2的用户没有权限查看ID为1的文档);由于定义用户是否具有权限的逻辑需要Solr中没有索引的字段,因此我需要签入数据库

为了实现这一点,我创建了一个查询解析器(称为
DocumentsByUserParser
,它扩展了solrconfig.xml中定义的类
QParserPlugin
),如下所示:

<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
   <lst name="defaults">
      <str name="suggest">true</str>
      <str name="suggest.count">10</str>
   </lst>
   <arr name="components">
      <str>suggest</str>
   </arr>
</requestHandler>

<searchComponent name="suggest" class="solr.SuggestComponent">
   <lst name="suggester">
       <str name="name">mySuggester</str>
       <str name="lookupImpl">AnalyzingInfixLookupFactory</str>
       <str name="indexPath">suggester_infix_dir</str>
       <str name="highlight">true</str>
       <str name="dictionaryImpl">DocumentDictionaryFactory</str>
       <str name="field">AUTO_COMPLETE_FIELD</str>
       <str name="suggestAnalyzerFieldType">text_general</str>
       <str name="buildOnStartup">false</str>
       <str name="buildOnCommit">false</str>
   </lst>
</searchComponent>

要调用此插件,我只需使用
{!filterDocument userId=''}
以及其他查询参数设置
fq
参数。请注意,上面的代码适用于edismax类型的搜索组件


我的问题是:我是否可以创建一个新的类似插件,如上所述,它可以与建议组件一起工作?因为当我为文档编制索引时,用户可能有(或没有)权限查看该文档,因此建议者不应显示用户没有权限查看的建议

我使用以下内容定义了我的建议组件以及请求处理程序:

<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy">
   <lst name="defaults">
      <str name="suggest">true</str>
      <str name="suggest.count">10</str>
   </lst>
   <arr name="components">
      <str>suggest</str>
   </arr>
</requestHandler>

<searchComponent name="suggest" class="solr.SuggestComponent">
   <lst name="suggester">
       <str name="name">mySuggester</str>
       <str name="lookupImpl">AnalyzingInfixLookupFactory</str>
       <str name="indexPath">suggester_infix_dir</str>
       <str name="highlight">true</str>
       <str name="dictionaryImpl">DocumentDictionaryFactory</str>
       <str name="field">AUTO_COMPLETE_FIELD</str>
       <str name="suggestAnalyzerFieldType">text_general</str>
       <str name="buildOnStartup">false</str>
       <str name="buildOnCommit">false</str>
   </lst>
</searchComponent>

真的
10
仅适用于单个索引的字段,因此这不适用于我的用例