2009-06-16 24 views

Respuesta

18

Si vas a trabajar con Lucene, compraría un buen libro que lo cubra de la A a la Z. Lucene tiene una curva de aprendizaje muy empinada (en mi opinión). No es solo saber cómo buscar tu eso es importante - también se trata de indexar . Hacer una búsqueda básica es fácil, pero crear un índice que conste de millones de registros de datos y aún poder realizar una búsqueda rápida es posible pero bastante difícil. No hay un tutorial que lo aprenda.

Recomendaría Lucene in Action, Second Edition por Michael McCandless, Erik Hatcher, y Otis Gospodnetić. Aunque está escrito para Lucene y no para Lucene.NET, eso no debería ser un problema ya que la termonología y las API son básicamente las mismas.

Sin embargo, si lo va a intentar rápidamente, puede leer this site. El nombre lo dice todo :-)

+1

Tengo que revisar el libro Lucene in Action y tengo que aceptar que es un buen tomo único para aprender todo Lucene! La mayoría de los conceptos teóricos se aplican a Lucene.NET; sin embargo, las implementaciones de código requerirán un pensamiento creativo. –

+1

Veo que acaba de salir la segunda edición de Lucene in Action. ¿Alguna idea sobre si está más cerca o más allá de Lucene.NET luego de la primera edición? –

9

Con frecuencia utilizamos Lucene.NET cuando los datos son enormes y deben tener tiempos de respuesta súper rápidos para la lectura. En general, incluimos los datos en que necesitamos buscar, así como la clave, para permitirnos asignar nuestros resultados a la tabla de la base de datos que tiene los detalles restantes. Esto nos permite buscar un usuario (en nuestro caso) que verifique su participación anterior. Esto no es solo una búsqueda de nombre de usuario sino una búsqueda que itera sobre varios detalles tratando de encontrar si hay otras instancias de ese usuario (aunque en una forma diferente). Un ejemplo de esto, buscamos la identificación de los usuarios (de un sistema), su ID de otro sistema, tal vez una ID de un sistema de proveedores, un GUID de cookies flash, un GUID de cookies de sitios, etc. Y a medida que encontramos un identificador, busque otras instancias de ese identificador para otras instancias de usuarios. Esto nos permite deduplicar la entrada de los usuarios a uno de muchos sistemas (ya que su participación en cualquier sistema solo se permite una vez cada 24 horas). En SQL, este alogrithm (que era vago) tomaría para siempre! En Lucene.NET toma menos de un segundo. Lucene tiene muchas más posibilidades de búsqueda que SQL Server. Lo que apesta es escribir o actualizar su índice. Esto generalmente se hace como un trabajo ... todo a la vez. Sin embargo, si necesita escribir en el índice actualizándolo en tiempo real, necesita escribir algún código inteligente para asegurarse de que está escrito de forma bloqueada (piense en cola con singleton) o su código se superpondrá y explotará.

Cubro el uso de Lucene.NET en mi libro (ASP.NET Social Networking) y usted puede encontrar mucha ayuda here.

1

El problema con Lucene.NET es que no tiene una comunidad activa como estándar (Java) Lucene - por lo que es como siempre funcionando con eficacia una versión antigua de Lucene. Aunque preferimos .NET, decidimos usar la versión Java de Lucene por este motivo. Si usa Solr también, es muy fácil de integrar.

1

'Lucene in Action' es el mejor libro para aprender a indexar y cómo buscar. Incluso cubre las técnicas de búsqueda avanzada y la escritura de analizadores personalizados. Aunque el libro es para Java ... he implementado la búsqueda y la indexación en .net usando este libro.

1

Simon Green tiene una bonita serie de tres partes sobre cómo configuró Lucene.Net para trabajar con su implementación de NHibernate. Part one introduces the series. Part two y part three discuten los detalles técnicos.

Encontré los ejemplos de código Lucene.Net muy útiles, aunque mi proyecto no utiliza NHibernate.