introdução a buscas com solr
DESCRIPTION
TRANSCRIPT
Introdução a buscas com Solr
+
@cloudson Claudson Oliveira
cloudson.github.io
select * from produtos where nome like '%batman%'
batman
Batman Arkham Asylum Batman Arkham City Batman Arkham Origins
batman city
select * from produtos where nome like '%batman%' and nome like '%city%'
Batman Arkham City
batman ps3
select * from produtos where nome like '%batman%' and nome like '%ps3%'
batman ps3
select * from produtos where (nome like '%batman%' and nome like '%ps3%') or (genero like '%batman%' and genero '%ps3%' ) or (nome like '%batman%' or nome like '%ps3%' or genero like '%batman%' or genero '%ps3%' )
Batman Arkham Origins
cartões de visita == cartão de visita ?
Celular == iphone?
CAPA DE NOTEBOOK == Capa de Notebook ? Filtros?
cade == cadern == caderno ?
Solr ?
Java 6
Lucene ou Solr 4.5.1?
http://Localhost:8983
Apache License version 2 link
Referência
Jetty
Núcleos
<?xml version="1.0" encoding="UTF-8" ?> <solr> <cores adminPath="/admin/cores"> <core name="produto" instanceDir="produto" /> </cores> </solr>
solrSkeleton/schemas/solr.xml
Esquemas
solrSkeleton/schemas/product/conf/schema.xml
Documento = Linha no banco
Esquema = Estrutura de dado
<?xml version="1.0" encoding="UTF-8"?> <schema name="Product" version="1.1"> <types> <!-- tipos --> </types> <fields> <!-- campos --> </fields> </schema>
Esquemas - tipos
solrSkeleton/schemas/product/conf/schema.xml
<?xml version="1.0" encoding="UTF-8"?> <schema name="Product" version="1.1"> <types> <fieldType name="inteiro" class="solr.IntField" /> <fieldType name=“frase" class="solr.StrField" /> </types> <fields> <field name="numero_compras" type="inteiro" />
</fields> </schema>
Classe Descrição
Solr. IntField Inteiros de 32bits com sinal
Solr.StrField String
Solr.TextField Text, usually multiple words or tokens.
Solr.DateTime “Y-m-d H:i:s”
Referência
Esquemas - Filtros
solrSkeleton/schemas/product/conf/schema.xml
<?xml version="1.0" encoding="UTF-8"?> <schema name="Product" version="1.1"> <types> <fieldType name="inteiro" class="solr.IntField" /> <fieldType name=“frase" class="solr.String" />
<fieldType name=“complexo" class=“solr.TextField"> <analyzer> <tokenizer class="solr.StandardTokenizerFactory"/> <filter class="solr.StopFilterFactory" words="stopwords.txt" /> <filter class="solr.LowerCaseFilterFactory"/> <filter class="solr.BrazilianStemFilterFactory"/> </analyzer>
</fieldType>
</types> <fields> <field name="numero_compras" type="inteiro" />
</fields> </schema>
solrSkeleton/schemas/product/conf/schema.xml
Esquemas - Filtros <filter class="solr.StopFilterFactory" words="stopwords.txt" /> <filter class="solr.LowerCaseFilterFactory"/>
Cartão de Visita
Cartão Visita
cartao visita
cartao visita
Cartao de visita Cartão Visita
Esquemas - Filtros
Filtro Exemplo
TrimFilterFactory “ phpsp” => “phpsp”
StopFilterFactory “encontro de novembro” => “encontro novembro”
EdgeNGramFilterFactory “programador” => “pro” , “progr” ... “programador”
WordDelimiterFilterFactory “phpSp” => “php”, “sp” / “git2u” => “git” , “2” , “u”
SynonymFilterFactory “celular” => “iphone”, “galaxy”, “foston”, “celular”
Referência
Handler
solrSkeleton/schemas/product/conf/solrconfig.xml
<?xml version="1.0" encoding="UTF-8" ?> <config> <luceneMatchVersion>4.4</luceneMatchVersion> <directoryFactory name="DirectoryFactory" class="${solr.directoryFactory:solr.StandardDirectoryFactory}"/> <dataDir>${solr.core0.data.dir:}</dataDir> <schemaFactory class="ClassicIndexSchemaFactory"/> <updateHandler class="solr.DirectUpdateHandler2" /> <requestHandler name="standard" class="solr.StandardRequestHandler" default="true" /> <requestHandler name="/update" class="solr.XmlUpdateRequestHandler" /> <requestHandler name="/admin/" class="org.apache.solr.handler.admin.AdminHandlers" /> <admin> <defaultQuery>solr</defaultQuery> </admin> </config>
Como salvar/atualizar um documento solr ? POST http://locahost:8983/solr/product/update HTTP/1.1 Content-Type: text/xml <add> <doc> <field name="fieldname1">field valueA</field> <field name="fieldname2">field valueB</field> </doc </add>
Ferramentas Solr Pecl - http://pecl.php.net/package/solr
Solarium - http://www.solarium-project.org/
SolrBundle - https://github.com/floriansemm/SolrBundle
Replication http://wiki.apache.org/solr/SolrReplication
SpellChecker http://wiki.apache.org/solr/SpellCheckComponent
Leia mais
Ascii cast http://asciinema.org/a/6219
Livro http://www.packtpub.com/apache-solr-4-cookbook/book
http://lucene.apache.org/solr/
Caching http://wiki.apache.org/solr/SolrCaching
http://blog.sematext.com/2012/08/23/solr-vs-elasticsearch-part-1-overview/
Dúvidas ?
@cloudson