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 невозможна, так как я потерял бы некоторую важную информацию.

Спасибо

0 ответов

Другие вопросы по тегам