Transcript
Page 1: Construyendo un motor de búsqueda con Zend Search Luceneueda con

Creando un motor de búsqueda con Zend Search Lucene

Page 2: Construyendo un motor de búsqueda con Zend Search Luceneueda con

Quién soy??

● Monterrey, N.L , México● Ingeniero Electrónica y Comunicaciones

● 11 años PHP y 3 años Zend Framework

● ZCE PHP 5, ZCE PHP 5.3, ZCE Zend Framework

● Instructor Autorizado Zend

Page 3: Construyendo un motor de búsqueda con Zend Search Luceneueda con

Zend Framework

Page 4: Construyendo un motor de búsqueda con Zend Search Luceneueda con

Zend Framework es....● Fullstack framework MVC

● Librería de Componentes● 'Use at will'

● Flexibilidad

Zend Framework

Page 5: Construyendo un motor de búsqueda con Zend Search Luceneueda con

Zend Framework

Zend_Search_Engine● Componente ZF● Motor de búsqueda de textos ● PHP 5 (no requeire más)● Standalone● Búsqueda Rankeada● Diferentes tipos de consultas● Búsqueda por campos

Page 6: Construyendo un motor de búsqueda con Zend Search Luceneueda con

Zend Framework

Zend_Search_Engine

● Versión PHP de Apache Lucene (Java)● No se requieren servidores externos, extensiones adicionales

o configuraciones especiales ● Compatible 1.4 - 2.3

● http://lucene.apache.org/java/docs/index.html

Page 7: Construyendo un motor de búsqueda con Zend Search Luceneueda con

Zend Studio

Conceptos● Índices

○ Archivos físicos en el sistema de archivos ○ Si no existe se necesita crear ○ Si ya existe se abre para manipularlo○ Se necesitan los permisos adecuados

$index = Zend_Search_Lucene:: create('/data/my-index');

$index = Zend_Search_Lucene:: open('/data/my-index');

Page 8: Construyendo un motor de búsqueda con Zend Search Luceneueda con

Zend Studio

Conceptos● Documentos

○ Objetos atómicos del índice○ Miles en un índice○ Formado por campos○ Representado por un objeto Zend_Search_Lucene_Document

Page 9: Construyendo un motor de búsqueda con Zend Search Luceneueda con

Zend Studio

Conceptos● Campos

○ Van dentro de un Documento○ Zend_Search_Lucene_Field○ Diferentes tipos:

■ Keyword■ UnIndexed■ Binary■ Text■ UnStored

● Índice > Documento > Campos

Page 10: Construyendo un motor de búsqueda con Zend Search Luceneueda con

Zend Studio

Aclaraciones ● No es un crawler o spiderbot● No es una Base de datos● No es un simple almacenaje de información● Es un motor de búsqueda!

Page 11: Construyendo un motor de búsqueda con Zend Search Luceneueda con

Zend Studio

Partes de un motor de búsqueda● Indexador

○ CLI o cronjob ○ Fuente de datos externa

■ Bases de datos■ Entradas del usuario

○ HTML○ PPT 2007○ Word 2007○ Excel 2007 ○ Proceso

■ Abrir o Crear el índice■ Crear documentos■ Añadir campos al documento■ Añadir docuentos al índice■ Cerrar índice

Page 12: Construyendo un motor de búsqueda con Zend Search Luceneueda con

Zend Framework

Partes de un motor de búsqueda● Buscador

○ Proceso■ Abrir el índice■ Realizar consulta■ Mostrar resultados■ Cerrar índice

○ Accion■ Abre el índice ■ Realiza consulta

○ Vista■ Muestra contenidos

Page 13: Construyendo un motor de búsqueda con Zend Search Luceneueda con

Zend Framework

Consultas o queries● Término

○ Palabra o frase que se busca

● Tipos○ Wildcards○ Rango○ Fuzzy○ Próximidad

● Opciones

○ Buscar por campos o conjunto de campos○ Operadores booleanos○ Peso a terminos○ Escape de caracteres especiales

Page 14: Construyendo un motor de búsqueda con Zend Search Luceneueda con

Zend Framework

Consultas o queries● Resultados

○ Hits ○ Documentos con un score ○ Se puede hacer una iteración con ellos

Page 15: Construyendo un motor de búsqueda con Zend Search Luceneueda con

Demo.....

Page 16: Construyendo un motor de búsqueda con Zend Search Luceneueda con

Ventajas● Sencillo de usar● No requiere servicios externos o extensiones● PHP !!● Adaptación a otros frameworks PHP

Zend Framework

Page 17: Construyendo un motor de búsqueda con Zend Search Luceneueda con

Desventajas● Los indices requieren mantenimiento por parte de la

aplicación● Limites de 2GB para 32 bit● Puede llegar a consumir muchos recursos de indices

gigantescos

Zend Framework

Page 18: Construyendo un motor de búsqueda con Zend Search Luceneueda con

Buenas prácticas y tips

Zend Framework

● Optimizar el indice● No usar nombres de campo id y/o score● Buscar documentos por id● Asegurarnos de indexar con el mismo charset con el que

buscamos● Darle mantenimiento al índice● IDEA: Modificar algoritmo de score

Page 19: Construyendo un motor de búsqueda con Zend Search Luceneueda con

Zend Framework

Muchas Gracias● Preguntas????● Twitter: @igormx