2016-06-09 44 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領域的價值的所有建議域

相關問題