Pergunta

Eu tenho usado o (Java) Marcador para Lucene (no pacote Sandbox) por algum tempo.No entanto, isso não é muito preciso quando se trata de combinar os termos corretos nos resultados da pesquisa - funciona bem para consultas simples, por exemplo, pesquisar duas palavras separadas destacará ambos os fragmentos de código nos resultados.

No entanto, não funciona bem com consultas mais complicadas.No caso mais simples, consultas de frase como "Stack Overflow" corresponderão a todas as ocorrências de Stack ou Overflow no destaque, o que dá ao usuário a impressão de que não está funcionando muito bem.

Eu tentei aplicar a correção aqui mas isso veio com muitas advertências de desempenho e, no final das contas, era simplesmente inutilizável.O desempenho é especialmente um problema em consultas curinga.Isso se deve à forma como funciona o realce;em vez de apenas trabalhar na string de consulta e no texto, ele analisa como Lucene faria e depois procura todas as correspondências que Lucene fez;infelizmente, isso significa que, para certas consultas curinga, ele pode procurar correspondências com mais de 2.000 cláusulas em documentos grandes e simplesmente não é rápido o suficiente.

Existe alguma implementação mais rápida de um marcador preciso?

Foi útil?

Solução

Há um novo mais rápido marcador (precisa ser corrigido in, mas farão parte da versão 2.9)

https://issues.apache.org/jira/browse/LUCENE-1522

e back-referência a esta questão

Outras dicas

Você pode olhar para usando Solr. http://lucene.apache.org/solr

Solr é um tipo de aplicativo de pesquisa genérico que usa Lucene e suportes destacando. É possível que o destaque em Solr é utilizável como um fora API de Solr. Você também pode olhar como Solr faz isso por inspiração.

Eu estive lendo sobre o assunto e me deparei com spanQuery que retornaria a você a extensão do prazo combinado ou termos no campo que combinava.

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