SOLR генерирует запросы фраз на пунктуацию
У меня есть следующая цепочка анализатора в моем экземпляре SOLR 3.5 (хотя у нас не настроена версия luceneMatch):
<fieldtype name="text_pt" class="solr.TextField"
positionIncrementGap="100" autoGeneratePhraseQueries="false">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.ASCIIFoldingFilterFactory" protected="protwords.txt" />
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1" generateNumberParts="1"
preserveOriginal="1" catenateWords="1" catenateNumbers="1"
catenateAll="0" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.StopFilterFactory" ignoreCase="false"
words="portugueseStopWords.txt" />
<filter class="solr.BrazilianStemFilterFactory" />
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory" />
<filter class="solr.ASCIIFoldingFilterFactory" protected="protwords.txt" />
<filter class="solr.SynonymFilterFactory" ignoreCase="true"
synonyms="portugueseSynonyms.txt" expand="true" />
<filter class="solr.WordDelimiterFilterFactory"
generateWordParts="1" generateNumberParts="1"
catenateWords="0" preserveOriginal="1" catenateNumbers="0"
catenateAll="0" protected="protwords.txt" />
<filter class="solr.LowerCaseFilterFactory" />
<filter class="solr.StopFilterFactory" ignoreCase="false"
words="portugueseStopWords.txt" />
<filter class="solr.BrazilianStemFilterFactory" />
<filter class="solr.RemoveDuplicatesTokenFilterFactory" />
</analyzer>
</fieldtype>
Обратите внимание, что у нас есть autoGeneratePhraseQueries = "false".
Очевидно, это должно помешать парсеру запросов генерировать запрос фразы при нахождении символа пунктуации. Однако этого не происходит.
Посмотрите на вывод & debugQuery:
<str name="querystring">title_search_pt:(looking,for peugeot)</str>
<str name="parsedquery">+PhraseQuery(title_search_pt:"looking for") +title_search_pt:peugeot</str>
Как вы можете видеть, эта запятая, хотя и корректно токенизирована, теперь заканчивается запросом фразы. Многие люди копируют вставленный текст для поиска (с пунктуацией), и, по моей логике, пунктуация не должна означать "сделать запрос фразы с этим".
Как я могу отключить / предотвратить это?
StandardTokenizer отлично понимает точки и запятые и разделяет их только при необходимости (сохраняя имена хостов, номера и т. Д.), Поэтому замена всех знаков препинания на клиенте перед запросом SOLR невозможна, так как я потерял бы некоторую важную информацию.
Спасибо