Solr - sinónimos que contienen varias palabras

Pregunta rápida, ¡no sé cómo tratar con los sinónimos que contienen un espacio! Tengo la siguiente configuración:

El archivo de configuración 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>

Mi archivo: syn.txt

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

Todo funcionaba bien excepto el sinónimo:

"NYC => New York"

Hice algunas investigaciones y encontré lo siguiente:

Tenga en cuenta que si bien el Sinónimo de filtro funcionará felizmente con sinónimos que contengan varias palabras (es decir, "galletas de mar, galletas de mar, galletas de mar")

El enfoque recomendado para tratar sinónimos como este, es expandir el sinónimo al indexar. Esto se debe a que hay dos problemas potenciales que pueden surgir en el momento de la consulta:

El Lucene QueryParser muestra el espacio en blanco antes de darle cualquier texto al Analizador, por lo que si una persona busca las palabras mar biscit, el analizador recibirá las palabras "mar" y "biscit" por separado, y no sabrá que coinciden con un sinónimo. .

La búsqueda de frases (es decir, "mar biscit") hará que QueryParser pase toda la cadena al analizador, pero si el Sinfonterizador está configurado para expandir los sinónimos, entonces cuando QueryParser recupera la lista resultante de tokens del Analizador, construirá una MultiPhraseQuery que no tendrá el efecto deseado.

Esto se debe al mecanismo limitado disponible para que el Analizador indique que dos términos ocupan la misma posición: no hay forma de indicar que una "frase" ocupa la misma posición que un término.

Para nuestro ejemplo, el resultado de MultiPhraseQuery sería "(sea | sea | seabiscuit) (biscuit | biscit)" que no coincidiría con el caso simple de "seabiscuit" que aparece en un documento

Así que intenté cambiar mi archivo de configuración y agregar mis filtros en la indexación pero no está funcionando.

¿Algo tuvo algunas ideas?

Respuestas a la pregunta(4)

Su respuesta a la pregunta