You are on page 1of 16

Apache Solr

O que Solr?
uma robusta ferramenta de
busca corporativa de cdigo
aberto baseada no Apache
Lucene.

Configurao do
Solr

Configurao do
Solr
Para criar um novo Core necessrio
criar uma nova pasta no diretrio
apache-solr/solr
com
o nome
desejado sem caracteres especiais ou
espao.
Ex.: apache-solr/solr/diariooficial
Para a pasta diariooficial,
subpastas conf, data

criar

conf: pasta de configurao do core


data: pasta onde so armazenados
as informaes de indexao

Configurao do
Solr
Na pasta conf deve conter pelo menos dois arquivos: schema.xml,
solrconfig.xml. Ambos arquivos so essenciais para configurao do
Solr.

schema.xml: o modelo de dados, neste determinamos: os tipo de


dados de campos, os campos utilizados, chaves, obrigatoriedade,
manerira de como os dados sero indexados.
solrconfig.xml: neste determinamos: a localizao do diretrio de
dados (pasta data), parmetros de cache, gestores de solicitaes e
componentes de pesquisa.

schema.xml
<?xml version="1.0" encoding="UTF-8" ?>
<schema name="diario-oficial" version="1.5">
<types>
<fieldType name="int" class="solr.TrieIntField" precisionStep="0"
omitNorms="true" positionIncrementGap="0"/>
...
</types>
<fields>
<field name="id" type="string" indexed="true" stored="true"
required="true" />
<field name="name" type="textgen" indexed="true" stored="true"/>
...
</fields>
<schema/>

schema.xml
Para configurar um esquema recomendado copiar um schema.xml
padro de exemplo do Solr (exemplo: apache-solr\exampleDIH\solr\solr\conf\schema.xml), assim teremos as definies de tipos
bsicos pr-moldadas e bem documentados. Com o arquivo base
podemos adequar as necessidades do core.

fieldType

A definio bsica de uma fieldType pode conter:

name: nome dado ao fieldType (obrigatrio)

class: nome da classe que implementa o fieldType (obrigatrio)

Propriedades do fieldType definidos pela class - dependendo da


classe de implementao, algumas propriedades podem ser
obrigatria.

Se o tipo de campo TextField, definir a descrio da anlise de


campo.

schema.xml

fieldType

<!-- Portuguese -->


<fieldType name="text_pt" class="solr.TextField" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.BrazilianLightStemFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory" preserveOriginal="false"/>
<filter class="solr.StopFilterFactory" words="stopwords_pt.txt" ignoreCase="true"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.BrazilianLightStemFilterFactory"/>
<filter class="solr.ASCIIFoldingFilterFactory" preserveOriginal="false"/>
<filter class="solr.StopFilterFactory" words="stopwords_pt.txt" ignoreCase="true"/>
<filter class="solr.SynonymFilterFactory" synonyms="synonyms_pt.txt" ignoreCase="true"
expand="true"/>
</analyzer>
</fieldType>

schema.xml

fieldType

<!-- Portuguese --> : Comentrio de cdigo


<analyzer type="index"> : Como a informao armazenada
<analyzer type="query"> : Como a informao ser buscada
tokenizer : como as palavras sero quebradas para indexao. Apenas um tokenizer pode ser
definido por analyzer (Link documentao)
filter : filtro a serem aplicados aos termos.

<tokenizer class="solr.StandardTokenizerFactory"/>
Esse tokenizer trata espaos em branco e pontuao como delimitadores
<filter class="solr.LowerCaseFilterFactory"/>
Os termos ficam em caixa baixa (minsculo)

schema.xml

fieldType

<filter class="solr.ASCIIFoldingFilterFactory" preserveOriginal="false"/>


Termos em ASCII, ignorando assim acentuaes e caracteres especiais
<filter class="solr.StopFilterFactory" words="stopwords_pt.txt" ignoreCase="true"/>
Ignorar palavras determinadas no arquivo stopwords_pt.txt (preposio, artigos, )
<filter class="solr.SynonymFilterFactory" synonyms="synonyms_pt.txt" ignoreCase="true"
O filtro de sinnimos foi adicionado apenas para o analyzer de tipo query, devido a no haver
a necessidade de indexar sinnimos. Na busca ser incrementada palavras sinnimos informadas
no arquivo synonymos_pt.txt

Os arquivos stopwords_pt.txt e synonyms_pt.txt devem ser adicionados na pasta conf.

schema.xml

field

So as definies das informaes a serem indexas/armazenadas.


Ex.:
<field name="price" type="float" default="0.0" indexed="true" stored="true"/>
Parmentros:

name: O nome do campo. Este deve apresentar caracteres alfanumricos e/ou underscore e
no deve iniciar com nmero.

type: nome do fieldType associados a esse field

default: valor padro

indexed: determina se o field ser indexado, permitindo poder ser usado em consultas para
recuperar documentos correspondentes

stored: o valor do campo pode ser recuperado em consulta

sortMissingFirst / sortMissingLast: ordenao de documentos por field

multiValued: indica que um nico documento pode conter vrios valores para esse tipo de
campo

termVectors / termPositions / termOffsets / termPayloads: instrui o Solr a manter a


informaes (posio, deslocamento, ocorrncia) dos termos para cada documento. Estes
podem ser utilizados acelerar o realce de termos buscados na exibio de documentos.

solrconfig.xml
Para configurar um esquema recomendado copiar um sorlconfig.xml padro de
exemplo do Solr (exemplo: apache-solr\example-DIH\solr\solr\conf\solrconfig.xml).
Neste determinamos a localizao do diretrio de dados, parmetros de cache,
gestores de solicitaes e componentes de pesquisa.
<dataDir>${solr.data.dir:./solr/data}</dataDir>
Usado para definir o diretrio de armazenamento de dados.
<requestHandler name="standard" class="solr.SearchHandler" default="true">
<lst name="defaults">
<str name="echoParams">explicit</str>
<!-<int name="rows">10</int>
<str name="fl">*</str>
<str name="version">2.1</str>
-->
</lst>
</requestHandler>
Configurao de manipulador responsvel por receber a solicitao HTTP, realizar a
pesquisa e retornar resposta.

solrconfig.xml
Para carregar documentos binrios e / ou estruturados, como o Office, Word, PDF e
outros formatos proprietrios; e utilizado o Apache Tika, que fornece uma estrutura
para envolver muitos analisadores de formato de arquivo diferentes.
ExtractingRequestHandler do Solr usa Tika para permitir aos usurios fazer upload
de arquivos binrios para Solr e ter texto extrado dele e, em seguida, index-lo.
<requestHandler name="/update/extract"
startup="lazy"
class="solr.extraction.ExtractingRequestHandler" >
<lst name="defaults">
<str name="lowernames">true</str>
<str name="uprefix">ignored_</str>
<str name="fmap.Last-Modified">last_modified</str>
<!-- capture link hrefs but ignore div attributes -->
<str name="captureAttr">true</str>
<str name="fmap.a">links</str>
<str name="fmap.div">ignored_</str>
</lst>
</requestHandler>

Criando o Core
Para criar o Core, deve ser acessado o mdulo administrativo do Solr (http://[servidor]:[porta]/solr)

Criando o Core
Acesse Core Admin , clique em Add Core , informe os parmetros e clique em Add Core 4

Consultando dados