Pergunta

Eu estou usando faceting do Solr e eu correr em um problema que eu estava esperando que eu poderia começar em torno de usar filtros.

Basicamente algumas vezes um nome de cidade virá através de SOLR como

"CAMBRIDGE"

e, por vezes é isso virá através como

"Cambridge"

Eu queria usar um filtro no Solr para parar a versão GRITANDO CAPS do nome da cidade. Parece que há um fitler para fazer todo o 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>

Eu queria saber se alguém sabia de um filtro que irá ignorar o primeiro caractere de uma palavra e aplicar minúsculas para o resto dos personagens. Por exemplo.

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

etc

Como alternativa, se é fácil escrever seus próprios filtros .. alguma ajuda sobre como fazer isso seria apreciada .. Eu não sou uma pessoa Java ..

Graças

Foi útil?

Solução

AFAIK não há nenhum filtro embutido assim. Se você quiser escrever isto, veja LowerCaseFilterFactory e LowerCaseFilter para referência, não parece ser muito difícil.

Ou você poderia fazer isso do lado do cliente, ou seja, em SolrNet você poderia escrever um decorador ISolrOperations que faz as transformações necessárias após a consulta real, usando ToTitleCase .

Outras dicas

Talvez você poderia fazer uso do 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>

Observe, eu não testei o código ou solr.PatternReplaceCharFilterFactory, então eu não tenho certeza se ele funciona. Se você precisa construir o seu próprio filtro este guia pode ser útil:

http: //robotlibrarian.billdueber. com / construindo-a-Solr-text-filtro-for-normalizando-data /

// John

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top