Pergunta

Eu nunca me deparei com um aplicativo/classe como o Zend Search Lucene antes, como sempre perguntei meu banco de dados.

Zend_Search_lucene opera com documentos como objetos atômicos para indexação. Um documento é dividido em campos nomeados e os campos têm conteúdo que pode ser pesquisado.

Um documento é representado pela classe Zend_Search_Lucene_Document, e esses objetos dessa classe contêm instâncias de zend_search_lucene_field que representam os campos no documento.

É importante observar que qualquer informação pode ser adicionada ao índice. Informações específicas do aplicativo ou metadados podem ser armazenados nos campos de documentos e depois recuperados com o documento durante a pesquisa.

Portanto, isso está basicamente dizendo que eu posso aplicar isso a qualquer coisa, incluindo bancos de dados, o principal aqui é fazer índices para pesquisa.

O que estou tentando entender é onde exatamente devo armazenar os índices no meu aplicativo, vamos tomar, por exemplo, temos telefones armazenados em um banco de dados, fabricantes, modelos - como devo categorizar os índices?

Se eu estou fazendo índices de usuários, digamos, os endereços que eu obviamente não gostaria que eles fossem visíveis publicamente, estou apenas confuso sobre como tudo funciona juntos, se houver desvantagens conhecidas, quaisquer petiscos que eu deveria saber ao usar enquanto usa o uso isto.

Foi útil?

Solução

Um índice Lucene é armazenado fora do banco de dados. Eu o armazenaria em um diretório de "dados" como irmã de seus controladores, modelos e visualizações. Mas você pode armazená -lo em qualquer lugar; Você só precisa especificar o caminho ao abrir o índice para consulta.

É basicamente uma cópia redundante dos documentos armazenados no seu banco de dados, e você precisa mantê -los sincronizados. Essa é uma das desvantagens: você deve escrever código para preencher o índice Lucene com base nos resultados de uma consulta em relação ao seu banco de dados. À medida que você adiciona dados ao banco de dados, você deve atualizar seu índice Lucene também.

Uma vantagem de usar uma solução de índice de texto completo externo é que você pode reduzir a carga de trabalho no seu RDBMS. Para encontrar um documento, você executa uma pesquisa usando a API Lucene. O resultado deve incluir um campo que contém o valor da chave primária (como parte do documento, mas não é necessário que ele seja analisado para pesquisa de FT). Você recupera esse campo quando faz uma pesquisa do Lucene, para poder procurar a respectiva linha no banco de dados.

Isso ajuda a responder sua pergunta?

Fiz uma apresentação recentemente para a Universidade MySQL comparando soluções de pesquisa de texto completo:http://forge.mysql.com/wiki/practicical_full-text_search_in_mysql

Eu também publico meus slides em http://www.slideshare.net/billkarwin.

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