Solr Suggester组件插件
我为Solr创建了一个插件(版本6.3),它添加了一个权限层,使用数据库查询过滤检索到的文档(例如:ID为2的用户没有权限查看ID为1的文档);由于定义用户是否具有权限的逻辑需要Solr中没有索引的字段,因此我需要签入数据库 为了实现这一点,我创建了一个查询解析器(称为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
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
仅适用于单个索引的
字段,因此这不适用于我的用例