Lucene ou Hibernate-Search, qual devo escolher?

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?

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.

[quote=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.[/quote]

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!

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

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.

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

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

[quote=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.[/quote]

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!

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.

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

[quote=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?[/quote]

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

[quote=deniswsrosa][quote=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?[/quote]

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

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!

[quote=AUser][quote=deniswsrosa][quote=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?[/quote]

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

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![/quote]

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.

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