Pergunta

Por exemplo, digamos que eu tenho a seguinte faceta:

Cores

  • Vermelho (7825)
  • Laranja (2343)
  • Verde (843)
  • Azul (5412)

No meu banco de dados, as cores seriam uma tabela e cada cor teria uma chave primária e um nome/valor.

Ao indexar com Solr/Lucene, em todos os exemplos que vi, o valor é indexado e não a chave primária. Então, se eu filtrar pela cor vermelha, conseguiria algo como o seguinte:

http://www.example.com/search?color=red

Estou me perguntando, é aconselhável indexar a chave primária e recuperar os valores do banco de dados ao exibir os valores da faceta? Então, eu teria algo assim:

http://www.example.com/search?color=1

"1" representando a chave primária da cor vermelha. Estou me perguntando se devo adotar essa abordagem, pois os valores de muitas das minhas facetas mudam frequentemente, mas as chaves primárias permanecem as mesmas. Além disso, o índice deve estar sincronizado com o banco de dados.

Mais tem alguma experiência com isso? Como você acha que isso afetará o desempenho?

Desde já, obrigado!

Foi útil?

Solução

Se você espera que suas entidades mudem com frequência, é mais fácil indexar os IDs e, quando você obtiver os resultados da faceta, faça uma pesquisa no banco de dados para obter os nomes das cores. Dessa forma, as mudanças nas cores não exigiriam que os documentos afetados fossem atualizados no índice.

Em nosso sistema, indexamos o Lucene do ID em vez do nome das entidades, exatamente por causa dos motivos que você declarou. Além disso, nossas entidades têm várias propriedades associadas a elas, que não são indexadas, por isso teríamos que chegar ao banco de dados para obtê -las de qualquer maneira.

No que diz respeito ao desempenho, a faceting de ID não será discernivelmente mais lenta ou mais rápida. No que diz respeito às pesquisas do banco de dados, não deve ser um grande negócio, especialmente se você estiver apenas puxando dezenas de facetas por vez. Você sempre pode usar o cache para acelerar isso se isso se tornar um problema.

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