Я уже некоторое время использую solr (acts_as_solr), но натолкнулся на очень странную вещь, которую я не могу заставить работать.
У меня есть текстовое поле, которое можно назвать
audience = [students, teachers, students_teachers, none]
когда я отправляю запрос
q= audience:students
возвращает только те, у кого установлено это значение.
пока, если я сделаю
fq= audience:students
Я получаю результаты с обоими [студентами, студентами-учителями]
Я пытался поместить в запрос фильтра кавычки, парены и все виды, но похоже, что он не соблюдает их, как я ожидал. Я на самом деле здесь использую отрицательную сторону fq, чтобы скрыть от пользователя некоторые результаты.
Я использую Solr 1.4.1
Есть мысли? Я собираюсь изменить параметры на уникальные слова без повторного использования. Может быть проблема с _ в именах.
<fieldType name="text" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="1" catenateNumbers="1" catenateAll="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms.txt" ignoreCase="true" expand="true"/>
<filter class="solr.StopFilterFactory" ignoreCase="true" words="stopwords.txt"/>
<filter class="solr.WordDelimiterFilterFactory" generateWordParts="1" generateNumberParts="1" catenateWords="0" catenateNumbers="0" catenateAll="0"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.EnglishPorterFilterFactory" protected="protwords.txt"/>
<filter class="solr.RemoveDuplicatesTokenFilterFactory"/>
</analyzer>
</fieldType>