Implantação do Apache Solr 4.7.2 com Analisador IK no CentOS

Preparação do Ambeinte e Etsrutura do Solr

O Apache Solr é uma plataforma de busca corporativa baseada em Java. Para operá-lo, é necessário um ambiente com JDK e um servidor de aplicação como o Apache Tomcat. A stack utilizada neste procedimento compreende o CentOS 6.4, JDK 1.6, Tomcat 6 e Solr 4.7.2. Recomenda-se evitar versões mais recentes do Solr (como a 4.9) caso o JDK instalado seja antigo, pois isso resultará em falhas de compatibilidade de bytecode.

O pacote de distribuição do Solr é dividido em dois componentes principais: o arquivo de aplicação web (dist/solr-4.7.2.war) e o diretório de configuração e dados (example/solr). O arquivo de configuração solrconfig.xml depende de bibliotecas externas localizadas nos diretórios contrib e dist. As referências de bibliotecas no arquivo de configuração devem ser ajustadas conforme a estrutura de diretórios:

<!-- Mapeamento de bibliotecas externas no solrconfig.xml -->
<lib dir="../../../contrib/extraction/lib" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-cell-\d.*\.jar" />

<lib dir="../../../contrib/clustering/lib/" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-clustering-\d.*\.jar" />

<lib dir="../../../contrib/langid/lib/" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-langid-\d.*\.jar" />

<lib dir="../../../contrib/velocity/lib" regex=".*\.jar" />
<lib dir="../../../dist/" regex="solr-velocity-\d.*\.jar" />

Implantação do WAR e Configuração do Solr Home

Siga os passos abaixo para realizar o deploy da aplicação e vincular o diretório de configuração:

  1. Copie o arquivo solr-4.7.2.war para o diretório webapps do Tomcat, renomeando-o para solr.war. Ao reiniciar o serviço, o Tomcat descompactará o arquivo automaticamente.
  2. Copie os diretórios contrib e dist para dentro da pasta example/solr. Certifique-se de que os caminhos relativos no solrconfig.xml apontem corretamente para essas bibliotecas. Em seguida, compacte a pasta solr em um arquivo ZIP e extraia-o no diretório raiz do Tomcat (por exemplo, /usr/local/tomcat/solr).
  3. Edite o arquivo WEB-INF/web.xml da aplicação Solr descompactada para definir a variável de ambiente que aponta para o diretório raiz do Solr:
<env-entry>
    <env-entry-name>solr/home</env-entry-name>
    <env-entry-value>/usr/local/tomcat/solr</env-entry-value>
    <env-entry-type>java.lang.String</env-entry-type>
</env-entry>

Após reiniciar o Tomcat, a interface de administração estará acessível através do endereço http://localhost:8080/solr.

Integração do Analisador IK (IK Analyzer)

Para habilitar a tokenização de texto em chinês, é necessário integrar o IK Analyzer ao núcleo do Solr.

  1. Extraia o pacote do IK Analyzer. Mova o arquivo de configuração (IKAnalyzer.cfg.xml), o binário principal (IKAnalyzer2012FF_u1.jar) e o dicionário de palavras de parada (stopword.dic) para o diretório WEB-INF/lib da aplicação Solr no Tomcat.
  2. Registre o novo tipo de campo no arquivo schema.xml, loclaizado no diretório de configuração do núcleo (collection1/conf/):
<fieldType name="text_ik" class="solr.TextField">
    <analyzer type="index" class="org.wltea.analyzer.lucene.IKAnalyzer" isMaxWordLength="false"/>
    <analyzer type="query" class="org.wltea.analyzer.lucene.IKAnalyzer" isMaxWordLength="true"/>
</fieldType>
  1. Atualize os campos desejados no schema.xml para utilizar o novo tipo de dados. Por exemplo, altere o tipo do campo de autor:
<field name="author" type="text_ik" indexed="true" stored="true"/>

Resolução de Problemas de Logging

O pacote WAR do Solr 4.7.2 não inclui as dependências de logging por padrão. Caso os logs não sejam configurados corretamente, o servidor lançará a exceção Could not find necessary SLF4j logging jars durante a inicialização do filtro SolrRequestFilter. Para corrigir isso, copie todos os arquivos JAR do diretório example/lib/ext e o arquivo log4j.properties de example/resources diretamente para o diretório lib do Tomcat.

Tags: apache-solr ik-analyzer tomcat CentOS slf4j

Publicado em 6-11 06:48 por Thomas