Construyendo un motor de búsqueda con Zend Search Luceneueda con

Preview:

DESCRIPTION

Una presentación en PHP Colombia hablando sobre Zend Search Engine

Citation preview

Creando un motor de búsqueda con Zend Search Lucene

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

Zend Framework

Zend Framework es....● Fullstack framework MVC

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

● Flexibilidad

Zend Framework

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

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

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');

Zend Studio

Conceptos● Documentos

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

Zend Studio

Conceptos● Campos

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

■ Keyword■ UnIndexed■ Binary■ Text■ UnStored

● Índice > Documento > Campos

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!

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

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

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

Zend Framework

Consultas o queries● Resultados

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

Demo.....

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

Zend Framework

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

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

Zend Framework

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