Pergunta

Lucene é um excelente mecanismo de busca, mas a versão .NET está por trás do lançamento oficial Java (última versão estável .NET é 2.0, mas a versão mais recente do Java Lucene é de 2,4, o que tem mais recursos).

Como você resolver isso?

Foi útil?

Solução

Uma maneira que eu encontrei, que foi surpreendido poderia trabalhar: Criar uma DLL .NET a partir de um Java arquivo .jar! Usando IKVM você pode baixar Lucene , obter o arquivo .jar, e executar:

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

que gera um .NET dll assim: lucene-core-2.4.0.dll

Você pode então apenas referenciar esta DLL do seu projeto e você está pronto para ir! Existem alguns tipos de java que necessita, assim também fazem referência IKVM.OpenJDK.ClassLibrary.dll. Seu código pode parecer um pouco como isto:

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

Eu nunca soube que você poderia ter Java para .NET interoperabilidade tão facilmente. A melhor parte é que C # e Java é "quase" código fonte compatível (onde exemplos Lucene estão em causa). Basta substituir System.Out com Console.Writeln:.)

=======

Update: Quando a construção de bibliotecas como o marcador Lucene, certifique-se de fazer referência ao núcleo de montagem (então você vai obter alguns avisos sobre aulas em falta). Assim, o marcador é construído como este:

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

Outras dicas

Faça o download do fonte e construí-lo. Eu fiz isso apenas na semana passada e foi fácil. Nenhum problema em tudo. A fonte está na versão 2.3.1.

Eu estou inscrito na lista de discussão e julgando a partir dele, Lucene.Net está sendo desenvolvido ativamente.

Lucene.net está em desenvolvimento e tem agora três committers

Eu converti o Lucene 2.4 de frasco para dll através deste caminho, mas agora ele me dá um erro que 'Tipo ou namespace Lucene não pôde ser encontrado'. I removido o antigo dll do projeto e referência adicional para o novo. Eu realmente quer se livrar da versão antiga, uma vez que levou cerca de 2 dias e no final durante a otimização deu algum erro e agora o índice não é actualizável: S. Eu li em algum lugar que a velocidade Lucene 2.4 indexação é muitas vezes mais rápido do que as versões antigas, se eu usar 2.3.1 do SVN isso vai ser mais rápido também?

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top