Solr - sinônimos contendo várias palavras

Pergunta rápida, eu não sei como lidar com sinônimos que contém um espaço! Eu tenho a seguinte configuração:

O arquivo de configuração do SOLR

<fieldType ... >
  <analyzer type="index">
    <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
            <filter class="solr.WordDelimiterFilterFactory" 
                            catenateWords="1" 
                            preserveOriginal="1"
                            splitOnCaseChange="1"
                            generateWordParts="1" 
                            generateNumberParts="1"         
                            catenateNumbers="1" 
                            catenateAll="1" 
                            />
    <filter class="solr.LowerCaseFilterFactory"/>
    <filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="30" side="front"/>
  </analyzer>
  <analyzer type="query">    
    <charFilter class="solr.MappingCharFilterFactory" mapping="mapping-ISOLatin1Accent.txt"/>
    <tokenizer class="solr.WhitespaceTokenizerFactory"/>
    <filter class="solr.LengthFilterFactory" min="2" max="70" />
    <filter class="solr.SynonymFilterFactory" synonyms="syn.txt" ignoreCase="true" expand="true"/>
    <filter class="solr.LowerCaseFilterFactory"/>
 </analyzer>
</fieldType>

Meu arquivo: syn.txt

st., st => saint
istambul => istanbul
airport, apt => aéroport
NYC => New York
pt., pt => port
brussels => bruxelles

Tudo estava funcionando bem, exceto o sinônimo:

"NYC => New York"

Eu fiz algumas pesquisas e encontrei o seguinte:

Tenha em mente que, enquanto o SynonymFilter terá prazer em trabalhar com sinônimos contendo várias palavras (ou seja: "biscoito do mar, biscuit mar, seabiscuit")

A abordagem recomendada para lidar com sinônimos como esse é expandir o sinônimo ao indexar. Isso ocorre porque há dois possíveis problemas que podem ocorrer no momento da consulta:

O Lucene QueryParser tokeniza o espaço em branco antes de fornecer qualquer texto ao Analyzer, portanto, se uma pessoa pesquisar as palavras sea biscit, o analisador receberá as palavras "sea" e "biscit" separadamente e não saberá que elas correspondem a um sinônimo .

Busca por frase (ex: "sea biscit") fará com que o QueryParser passe a string inteira para o analisador, mas se o SynonymFilter estiver configurado para expandir os sinônimos, quando o QueryParser receber a lista resultante de tokens do Analyzer, irá construir um MultiPhraseQuery que não terá o efeito desejado.

Isso ocorre devido ao mecanismo limitado disponível para o Analyzer indicar que dois termos ocupam a mesma posição: não há como indicar que uma "frase" ocupa a mesma posição que um termo.

Para nosso exemplo, a MultiPhraseQuery resultante seria "(sea | sea | seabiscuit) (biscuit | biscit)" que não corresponderia ao caso simples de "seabiscuit" que ocorre em um documento

Então eu tentei mudar o meu arquivo de configuração e adicionar meus filtros na indexação, mas não está funcionando.

Alguma coisa teve algumas idéias?

questionAnswers(4)

yourAnswerToTheQuestion