2016-06-09 47 views
0

所以我有一个数据库在索引索引,我试图过滤搜索建议(建议)使用ContextField/cfq。我想要做的是将建议查询过滤到上下文字段(布尔字段)设置为false或没有该字段的元素。只使用false不起作用,我不确定如何在solrconfig.xml里的suggest.cfq字段里表达它,因为这个字段已经被声明为一个contextfield,它看起来并不像我能做的(-myfield:[* TO *] AND )或myfield :假。如何做我想做的事?Solr建议与ContextField:不是所有的对象都有该字段

solrconfig.xml中的相关大块:

<searchComponent name="suggest" class="solr.SuggestComponent"> 
<lst name="suggester"> 
    <str name="name">composerSuggest</str> 
    <str name="lookupImpl">AnalyzingInfixLookupFactory</str> 
    <str name="indexPath">suggestions/composerSuggest_dict</str> 
    <str name="dictionaryImpl">DocumentDictionaryFactory</str> 
    <str name="field">composers_searchable</str> 
    <str name="weightField">price</str> 
    <str name="suggestAnalyzerFieldType">suggestTypeLc</str> 
    <str name="buildOnStartup">true</str> 
    <str name="buildOnCommit">false</str> 
    <str name="highlight">false</str> 
</lst> 
<lst name="suggester"> 
    <str name="name">pieceSuggest</str> 
    <str name="lookupImpl">AnalyzingInfixLookupFactory</str> 
    <str name="indexPath">suggestions/pieceSuggest_dict</str> 
    <str name="dictionaryImpl">DocumentDictionaryFactory</str> 
    <str name="field">pieces_searchable</str> 
    <str name="weightField">price</str> 
    <str name="contextField">hidden</str> 
    <str name="suggestAnalyzerFieldType">suggestTypeLc</str> 
    <str name="buildOnStartup">true</str> 
    <str name="buildOnCommit">false</str> 
    <str name="highlight">false</str> 
</lst> 
<lst name="suggester"> 
    <str name="name">collectionSuggest</str> 
    <str name="lookupImpl">AnalyzingInfixLookupFactory</str> 
    <str name="indexPath">suggestions/collectionSuggest_dict</str> 
    <str name="dictionaryImpl">DocumentDictionaryFactory</str> 
    <str name="field">collections_searchable</str> 
    <str name="weightField">price</str> 
    <str name="suggestAnalyzerFieldType">suggestTypeLc</str> 
    <str name="buildOnStartup">true</str> 
    <str name="buildOnCommit">false</str> 
    <str name="highlight">false</str> 
</lst> 
<lst name="suggester"> 
    <str name="name">languageSuggest</str> 
    <str name="lookupImpl">AnalyzingInfixLookupFactory</str> 
    <str name="indexPath">suggestions/languageSuggest_dict</str> 
    <str name="dictionaryImpl">DocumentDictionaryFactory</str> 
    <str name="field">languages_searchable</str> 
    <str name="weightField">price</str> 
    <str name="suggestAnalyzerFieldType">suggestTypeLc</str> 
    <str name="buildOnStartup">true</str> 
    <str name="buildOnCommit">false</str> 
    <str name="highlight">false</str> 
</lst> 
<lst name="suggester"> 
    <str name="name">genreSuggest</str> 
    <str name="lookupImpl">AnalyzingInfixLookupFactory</str> 
    <str name="indexPath">suggestions/genreSuggest_dict</str> 
    <str name="dictionaryImpl">DocumentDictionaryFactory</str> 
    <str name="field">genres_searchable</str> 
    <str name="weightField">price</str> 
    <str name="suggestAnalyzerFieldType">suggestTypeLc</str> 
    <str name="buildOnStartup">true</str> 
    <str name="buildOnCommit">false</str> 
    <str name="highlight">false</str> 
</lst> 
<lst name="suggester"> 
    <str name="name">locationSuggest</str> 
    <str name="lookupImpl">AnalyzingInfixLookupFactory</str> 
    <str name="indexPath">suggestions/locationSuggest_dict</str> 
    <str name="dictionaryImpl">DocumentDictionaryFactory</str> 
    <str name="field">locations_searchable</str> 
    <str name="weightField">price</str> 
    <str name="suggestAnalyzerFieldType">suggestTypeLc</str> 
    <str name="buildOnStartup">true</str> 
    <str name="buildOnCommit">false</str> 
    <str name="highlight">false</str> 
</lst> 
<lst name="suggester"> 
    <str name="name">sourceSuggest</str> 
    <str name="lookupImpl">AnalyzingInfixLookupFactory</str> 
    <str name="indexPath">suggestions/sourceSuggest_dict</str> 
    <str name="dictionaryImpl">DocumentDictionaryFactory</str> 
    <str name="field">sources_searchable</str> 
    <str name="weightField">price</str> 
    <str name="suggestAnalyzerFieldType">suggestTypeLc</str> 
    <str name="buildOnStartup">true</str> 
    <str name="buildOnCommit">false</str> 
    <str name="highlight">false</str> 
</lst> 
<lst name="suggester"> 
    <str name="name">instrumentSuggest</str> 
    <str name="lookupImpl">AnalyzingInfixLookupFactory</str> 
    <str name="indexPath">suggestions/instrumentSuggest_dict</str> 
    <str name="dictionaryImpl">DocumentDictionaryFactory</str> 
    <str name="field">instruments_voices_searchable</str> 
    <str name="weightField">price</str> 
    <str name="suggestAnalyzerFieldType">suggestTypeLc</str> 
    <str name="buildOnStartup">true</str> 
    <str name="buildOnCommit">false</str> 
    <str name="highlight">false</str> 
</lst> 
<lst name="suggester"> 
    <str name="name">tagSuggest</str> 
    <str name="lookupImpl">AnalyzingInfixLookupFactory</str> 
    <str name="indexPath">suggestions/tagSuggest_dict</str> 
    <str name="dictionaryImpl">DocumentDictionaryFactory</str> 
    <str name="field">tags_searchable</str> 
    <str name="weightField">price</str> 
    <str name="suggestAnalyzerFieldType">suggestTypeLc</str> 
    <str name="buildOnStartup">true</str> 
    <str name="buildOnCommit">false</str> 
    <str name="highlight">false</str> 
</lst> 
</searchComponent> 
<requestHandler name="/suggest" class="solr.SearchHandler" startup="lazy" > 
<lst name="defaults"> 
    <str name="suggest">true</str> 
    <str name="suggest.count">15</str> 
    <str name="suggest.cfq">(-hidden:[* TO *] AND *:*) OR hidden:false</str> 
</lst> 
<arr name="components"> 
    <str>suggest</str> 
</arr> 

回答

0

希望它可以帮助别人。

在提示组件中指定contextField(您的情况为pieceSuggestsuggester)。 对于<str name="contextField">hidden</str>变化requestHandlercfq字段值:

<str name="suggest.cfq">-true</str> 

应该提供具有false或没有hidden领域的价值的所有建议域

相关问题