Pregunta

Lucene es un excelente motor de búsqueda, pero la versión .NET está detrás del lanzamiento oficial de Java (la última versión estable de .NET es 2.0, pero la última versión de Java Lucene es 2.4, que tiene más características).

¿Cómo te las arreglas?

¿Fue útil?

Solución

Una forma que encontré, que me sorprendió, podría funcionar: ¡Cree una DLL .NET a partir de un archivo .jar de Java! Usando IKVM puede descargue Lucene , obtenga el archivo .jar y ejecute:

ikvmc -target:library <path-to-lucene.jar>

que genera una dll .NET como esta: lucene-core-2.4.0.dll

¡Luego puedes simplemente hacer referencia a esta DLL desde tu proyecto y listo! Hay algunos tipos de Java que necesitará, por lo que también haga referencia a IKVM.OpenJDK.ClassLibrary.dll. Tu código podría verse un poco así:

QueryParser parser = new QueryParser("field1", analyzer);
java.util.Map boosts = new java.util.HashMap();
boosts.put("field1", new java.lang.Float(1.0));
boosts.put("field2", new java.lang.Float(10.0));

MultiFieldQueryParser multiParser = new MultiFieldQueryParser
                      (new string[] { "field1", "field2" }, analyzer, boosts);
multiParser.setDefaultOperator(QueryParser.Operator.OR);

Query query = multiParser.parse("ABC");
Hits hits = isearcher.search(query);

Nunca supe que podrías tener la interoperabilidad de Java a .NET tan fácilmente. La mejor parte es que C # y Java es " casi " Código fuente compatible (en lo que concierne a los ejemplos de Lucene). Simplemente reemplace System.Out con Console.Writeln :).

=======

Actualización: al crear bibliotecas como el resaltador Lucene, asegúrate de hacer referencia al ensamblaje central (de lo contrario, recibirás advertencias sobre las clases faltantes). Así que el marcador se construye así:

ikvmc -target:library lucene-highlighter-2.4.0.jar -r:lucene-core-2.4.0.dll

Otros consejos

Descarga la fuente y compílala. Hice esto el fin de semana pasado y fue fácil. No hay problema. La fuente está en la versión 2.3.1.

Estoy suscrito a la lista de correo y, a juzgar por ella, Lucene.Net se está desarrollando activamente.

Lucene.net está en desarrollo y ahora tiene tres confirmadores

Convertí el Lucene 2.4 de jar a dll de esta manera, pero ahora me da un error que dice "No se pudo encontrar el tipo o el espacio de nombres de Lucene". Quité la dll antigua del proyecto y añadí una referencia para la nueva. Tengo muchas ganas de deshacerme de la versión anterior, ya que tomó alrededor de 2 días y al final, durante la optimización, dio un error y ahora el índice no es actualizable: S. Leí en algún lugar que la velocidad de indexación de Lucene 2.4 es muchas veces más rápida que las versiones anteriores, si uso la versión 2.3.1 de SVN, ¿eso también será más rápido?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top