Lucene ou Hibernate-Search, qual devo escolher?

13 respostas
AUser

Bom dia srs.,

Na busca da melhor tecnologia, tem algo que me anda tirando do serio. Bom, todo mundo fala bem do Hibernate-Search como sendo uma ferramenta rapida e usual pra se usar o Lucene, annotations pra ca, annotations pra la, e voi-la, seu indice esta configurado e pesquisavel. O problema que ando vendo, eh que em projetos grandes o pessoal nao usa o Hibernate search, mas prefere utilizar so o Lucene, na mao, mesmo sendo mais dificil configurar / manter.

Alguem sabe me dizer o motivo disso?

Grato!

Edit: tambem andei vendo sobre o Solr… Alguem sabe me dizer mais sobre ele? Benchmarks , etc?

13 Respostas

jyoshiriro

Olá.

Amigo, no tribunal que trabalho usamos o Hibernate Search (e uma versão antiga) numa tabela com cerca de 4,1 milhões de registros. O único campo indexado tem em média de 7 palavras e ainda usamos um dispositivo de consulta fonética fora a parte do Hibernate Search.
Resultado: buscas com 2 palavras levam até menos de 0,2s em alguns casos. Buscas muito comuns, como “Maria Silva”, por exemplo, levam cerca de 10s.

Quando usávamos uma base de testes com “apenas” 500k registros, as buscas nunca levavam mais de 2s (as com nomes bem comuns, como “silva”, por exemplo) mas a maioria da buscas batia na casa dos 0,2s.

AUser

jyoshiriro:
Olá.

Amigo, no tribunal que trabalho usamos o Hibernate Search (e uma versão antiga) numa tabela com cerca de 4,1 milhões de registros. O único campo indexado tem em média de 7 palavras e ainda usamos um dispositivo de consulta fonética fora a parte do Hibernate Search.
Resultado: buscas com 2 palavras levam até menos de 0,2s em alguns casos. Buscas muito comuns, como “Maria Silva”, por exemplo, levam cerca de 10s.

Quando usávamos uma base de testes com “apenas” 500k registros, as buscas nunca levavam mais de 2s (as com nomes bem comuns, como “silva”, por exemplo) mas a maioria da buscas batia na casa dos 0,2s.

Opa,

Mas nessa busca vcs limitavam a quatnidade maxima do retorno ou o que viesse tava valendo? Vcs chegaram a pensar em usar o Solr?

[]'s!

Victor_Neves

os números podem enganar, se lembrarmos que hardware interfere fortemente…

jyoshiriro

Sem limitação. O tempo a qual me referi é o da busca indexada e não do retorno da tupla. Se pegar uma tupla de 1000 linhas com 10 campos grandes, nem com lucene nem nenhuma outra tecnologia fará o retorno ser rápido.

Não. Daria muito trabalho. Você se refere à parte fonética? Bem, o Solr foi um fracasso para nosso idioma (pt BR). Só cola mesmo pra idioma americano ao que parece.

Realmente, o hardware em questão é muito bom, mas não acredito que não seja “top de linha”.

Amigo, de boa: é muito rápido que vc configura o Hib Search. Faz um teste de carga ai que em 1 dia você saberá se essa solução irá valer a pena no teu caso :wink:

Aqui usamos o JMeter para atestar a alta performance em nosso contexto.

Marcio_Nogueira

O mercado utiliza o hibernate como framework de persistência e padrão altamente difundido.

Victor_Neves

já aproveitando o tópico… alguem pode deixar aqui (para os proximos que procurarem por assuntos relacionados a banco de dados orientado a coluna) o link de download pro BigTable!
eu ja procurei mas nao achei… =/
ja fui no googleCode e nao achei, no googleLabs e nao achei… se alguem souber o link posta ae!

vlw

AUser

jyoshiriro:

Sem limitação. O tempo a qual me referi é o da busca indexada e não do retorno da tupla. Se pegar uma tupla de 1000 linhas com 10 campos grandes, nem com lucene nem nenhuma outra tecnologia fará o retorno ser rápido.

Não. Daria muito trabalho. Você se refere à parte fonética? Bem, o Solr foi um fracasso para nosso idioma (pt BR). Só cola mesmo pra idioma americano ao que parece.

Realmente, o hardware em questão é muito bom, mas não acredito que não seja “top de linha”.

Amigo, de boa: é muito rápido que vc configura o Hib Search. Faz um teste de carga ai que em 1 dia você saberá se essa solução irá valer a pena no teu caso :wink:

Aqui usamos o JMeter para atestar a alta performance em nosso contexto.

Opa,

O problema eh que eu nao vou persistir um pojo do Hibernate, em si. Ele contem apenas alguns dos atributos, a entidade que iria para o index seria uma mistura de outras entidades, de acordo com parametros especificos (e dai parte a dificuldade de regular parametros que alteram em runtime e annotations). O teste de carga que to querendo eh meio absurdo, nao eh tao facil assim p/ fazer.

Sobre a pesquisa fonetica, eu nem to pensando sobre isso ainda. Eu to pensando eh na normal mesmo…

[]'s!

jyoshiriro

Ah, tá.

Bem, nesse caso acredito que é melhor você usar o lucene mesmo.

Achei que já existisse um Hibernate configurado ai pra você :slight_smile:

Ah, e quanto ao BigTable, posso estar enganado, mas acho que não se “baixa” e sim se usa ele online sempre.

Leozin

bom, se o que você está indexando é uma entidade gerenciada pelo hibernate, então user o hibernate-search (que por debaixo dos panos, utiliza o lucene)

se tu precisa de mais detalhes, negócios mais hardcore etc, use o lucene

deniswsrosa

AUser:
Bom dia srs.,

Na busca da melhor tecnologia, tem algo que me anda tirando do serio. Bom, todo mundo fala bem do Hibernate-Search como sendo uma ferramenta rapida e usual pra se usar o Lucene, annotations pra ca, annotations pra la, e voi-la, seu indice esta configurado e pesquisavel. O problema que ando vendo, eh que em projetos grandes o pessoal nao usa o Hibernate search, mas prefere utilizar so o Lucene, na mao, mesmo sendo mais dificil configurar / manter.

Alguem sabe me dizer o motivo disso?

Grato!

Edit: tambem andei vendo sobre o Solr… Alguem sabe me dizer mais sobre ele? Benchmarks , etc?

O ideal seria usar Solr/SolrJ é simplesmente excelente, aliviou muito a carga do banco.

AUser

deniswsrosa:
AUser:
Bom dia srs.,

Na busca da melhor tecnologia, tem algo que me anda tirando do serio. Bom, todo mundo fala bem do Hibernate-Search como sendo uma ferramenta rapida e usual pra se usar o Lucene, annotations pra ca, annotations pra la, e voi-la, seu indice esta configurado e pesquisavel. O problema que ando vendo, eh que em projetos grandes o pessoal nao usa o Hibernate search, mas prefere utilizar so o Lucene, na mao, mesmo sendo mais dificil configurar / manter.

Alguem sabe me dizer o motivo disso?

Grato!

Edit: tambem andei vendo sobre o Solr… Alguem sabe me dizer mais sobre ele? Benchmarks , etc?

O ideal seria usar Solr/SolrJ é simplesmente excelente, aliviou muito a carga do banco.

Mas uma coisa que me preocupa eh a questao http do solr. Eu ja indexei pelo lucene direto, usando http, e achei lento que so o cao. E se eu precisasse reconstruir o indice, por exemplo? Esse eh o problema… Eu to procurando benchmarks aqui e nao to achando.

[]s!

deniswsrosa

AUser:
deniswsrosa:
AUser:
Bom dia srs.,

Na busca da melhor tecnologia, tem algo que me anda tirando do serio. Bom, todo mundo fala bem do Hibernate-Search como sendo uma ferramenta rapida e usual pra se usar o Lucene, annotations pra ca, annotations pra la, e voi-la, seu indice esta configurado e pesquisavel. O problema que ando vendo, eh que em projetos grandes o pessoal nao usa o Hibernate search, mas prefere utilizar so o Lucene, na mao, mesmo sendo mais dificil configurar / manter.

Alguem sabe me dizer o motivo disso?

Grato!

Edit: tambem andei vendo sobre o Solr… Alguem sabe me dizer mais sobre ele? Benchmarks , etc?

O ideal seria usar Solr/SolrJ é simplesmente excelente, aliviou muito a carga do banco.

Mas uma coisa que me preocupa eh a questao http do solr. Eu ja indexei pelo lucene direto, usando http, e achei lento que so o cao. E se eu precisasse reconstruir o indice, por exemplo? Esse eh o problema… Eu to procurando benchmarks aqui e nao to achando.

[]s!

Temos uma base de 35 Giga aqui, e por volta de 10 mill usuários, vira e mexe precisamos que reindexar tudo devido a novos atributos e etc,o reindex fica por volta de 3.5 horas, mas você não precisa necessariamente apagar todos os ínidices e criar tudo do zero, já que  se pode apagar e recriar somente um índice específico ou mandar reindexar sobreescrevendo o ínidce antigo.

O que eu acho sensacional no Solr é justamente por ser um módulo totalmente a parte do seu projeto, você pode rodar ele em um servidor dedicado se precisar, pode fazer manutencão sem parar a aplicacão principal além de eventualmente poder compartilhar os dados com outros aplicativos.

Benchmarks em si eu tb não tenho, mas o nosso sistema está rodando em producão com ele.

fabioebner

Pessoal estou com 2 problemas.

1 - não consigo gerar o meu indice logo no iniciar da aplicacao (spring + hibernate + search), hoje tive que fazer uma funcao que chamo sempre que inicio a aplicacao

2 - sempre que paro o tomcat sou obrigado a gerar o indice novamente. tem como resolver isso?

obrigado

Criado 2 de novembro de 2011
Ultima resposta 28 de jan. de 2014
Respostas 13
Participantes 7