4. Zend Framework es....
● Fullstack framework MVC
● Librería de Componentes
● 'Use at will'
● Flexibilidad
Zend Framework
5. 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
6. 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 Framework
7. 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
8. Conceptos
● Documentos
○ Objetos atómicos del índice
○ Miles en un índice
○ Formado por campos
○ Representado por un objeto Zend_Search_Lucene_Document
Zend Studio
9. Conceptos
● Campos
○ Van dentro de un Documento
○ Zend_Search_Lucene_Field
○ Diferentes tipos:
■ Keyword
■ UnIndexed
■ Binary
■ Text
■ UnStored
● Índice > Documento > Campos
Zend Studio
10. 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
11. 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 Studio
12. 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
13. 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
14. Consultas o queries
● Resultados
○ Hits
○ Documentos con un score
○ Se puede hacer una iteración con ellos
16. Ventajas
● Sencillo de usar
● No requiere servicios externos o extensiones
● PHP !!
● Adaptación a otros frameworks PHP
Zend Framework
17. 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
18. Buenas prácticas y tips
● 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