Zend: generación de índices y los pros y contras de Zend_Search_Lucene
-
19-09-2019 - |
Pregunta
Nunca he encontré con una aplicación / clase como Zend Lucene búsqueda antes, como siempre he reclamé mi base de datos.
Zend_Search_Lucene opera con documentos como objetos para atómicas indexación. Un documento se divide en campos denominados campos, y tienen un contenido que se pueden buscar.
Un documento está representado por la Zend_Search_Lucene_Document clase, y estos objetos de esta clase contienen casos de Zend_Search_Lucene_Field que representan los campos de la documento.
Es importante tener en cuenta que cualquier información puede ser añadido al índice. información específica de la aplicación o metadatos se pueden almacenar en el documento campos, y más tarde recuperar con la documento durante la búsqueda.
Así que esto es básicamente diciendo que puedo aplicar esto a bases de datos de cualquier cosa, incluyendo, la clave aquí es hacer índices para la búsqueda.
Lo que estoy tratando de entender es dónde exactamente debería almacenar los índices en mi solicitud, tomemos por ejemplo tenemos los teléfonos almacenados en una base de datos, un fabricantes, modelos -? Cómo debo categorizar los índices
Si estoy haciendo índices de los usuarios con direcciones digamos, que obviamente no quieren que sean visibles públicamente, sólo estoy confundido acerca de cómo funciona todo en conjunto, si se conocen las desventajas, las trampas que debería saber mientras lo usa.
Solución
Un índice Lucene se almacena fuera de la base de datos. Me lo almacenan en un directorio "datos" como una hermana para sus controladores, modelos y vistas. Pero se puede almacenar en cualquier lugar; sólo tiene que especificar la ruta al abrir el índice para la consulta.
Es básicamente una copia redundante de los documentos almacenados en su base de datos, y hay que mantenerlos sincronizados mismo. Esa es una de las desventajas: hay que escribir código para llenar el índice Lucene basado en los resultados de una consulta en la base de datos. A medida que agrega los datos a la base de datos, tiene que actualizar su índice de Lucene también.
Una ventaja de utilizar una solución índice de texto completo externo es que se puede reducir la carga de trabajo de su RDBMS. Para encontrar un documento, se ejecuta una búsqueda usando la API de Lucene. El resultado debe incluir un campo que contiene el valor de la clave primaria (como parte del documento, pero no hay necesidad de que sea analizada para la búsqueda FT). Se obtiene este campo hacia atrás cuando se hace una búsqueda Lucene, por lo que puede buscar la fila correspondiente en la base de datos.
¿Tiene que ayudar a responder a su pregunta?
Me hizo una presentación recientemente por la Universidad de MySQL comparación de las soluciones de búsqueda de texto completo: http://forge.mysql.com/wiki/Practical_Full-Text_Search_in_MySQL
También publico mis diapositivas en http://www.SlideShare.net/billkarwin .