So I have a database indexed in solr, and I'm trying to filter the search suggestions(suggester) using ContextField/cfq. What I am trying to do is filter the suggestion queries to either elements that have the context field (a boolean field) set to false, or that don't have the field.Using just false doesn't work, I'm not sure how to formulate it inside the suggest.cfq field inside solrconfig.xml, since the field is already declared as a contextfield and it doesn't seem like I can do (-myfield:[* TO *] AND :) OR myfield:false. How to do what I want to do?
The relevant chunk of 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>
Hope it helps someone.
Specify
contextFieldin the suggester component(pieceSuggestsuggesterin your case). For<str name="contextField">hidden</str>change thecfqfield value inrequestHandleras :It should give all the suggest fields having
falseor no value ofhiddenfield