Pregunta

Estoy usando en facetas de Solr y me he topado con un problema que yo estaba esperando que yo pudiera llegar alrededor de usar filtros.

Básicamente algunas veces al nombre de la ciudad vendrán a través de la SOLR como

"CAMBRIDGE"

y en algún momento es que vendrá a través como

"Cambridge"

quería utilizar un filtro en Solr para detener los gritos CAPS versión del nombre de la ciudad. Parece que hay un fitler para hacer todo el texto minúsculas .

<!-- A text field that only sorts out casing for faceting -->
    <fieldType name="text_facet" class="solr.TextField" positionIncrementGap="100">
      <analyzer type="index">
  <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
      <analyzer type="query">
  <tokenizer class="solr.WhitespaceTokenizerFactory"/>
        <filter class="solr.LowerCaseFilterFactory"/>
      </analyzer>
    </fieldType>

Me preguntaba si alguien sabía de un filtro que ignorará el primer carácter de una palabra en minúsculas y aplicar al resto de los personajes. Por ejemplo.

  • CAMBRIDGE Cambridge >>
  • Kingston upon Hull >> Kingston Upon Hull

etc.

Como alternativa si es fácil de escribir sus propios filtros .. un poco de ayuda sobre cómo hacer eso sería apreciada .. No soy una persona de Java ..

Gracias

¿Fue útil?

Solución

Que yo sepa no hay ninguna está incorporado en el filtro de esa manera. Si desea escribirlo, consulte LowerCaseFilterFactory y LowerCaseFilter de referencia.

O usted puede hacer esto en el cliente, es decir, en SolrNet se podría escribir un decorador ISolrOperations que hace las transformaciones necesarias después de la consulta real, utilizando ToTitleCase .

Otros consejos

Tal vez usted podría hacer uso de la solr.PatternReplaceCharFilterFactory?

<fieldType name="textCharNorm" class="solr.TextField">
  <analyzer>
    <filter class="solr.LowerCaseFilterFactory"/>
    <charFilter class="solr.PatternReplaceCharFilterFactory"
                pattern="([^\s]{1})([^\s]*)" replaceWith="\U$1\L$2"/>
  </analyzer>
</fieldType>

Aviso, no he probado el código o solr.PatternReplaceCharFilterFactory, así que no estoy seguro si funciona. Si usted necesita para construir su propio filtro de esta guía puede ser útil:

http: //robotlibrarian.billdueber. com / edificio-a-Solr-texto-filtro para la normalización-datos /

// John

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top