Como faço para implementar a Funcionalidade de Pesquisa em um site?[fechado]

StackOverflow https://stackoverflow.com/questions/34314

  •  09-06-2019
  •  | 
  •  

Pergunta

Quero implementar a funcionalidade de pesquisa para um site (suponha que ele é semelhante a ISSO).Eu não quero usar a pesquisa do Google de coisas como essa.

A minha pergunta é:

Como posso implementar isso?

Existem dois métodos estou ciente de:

  1. Pesquisar todos os bancos de dados do aplicativo quando o usuário dá sua consulta.
  2. Índice de todos os dados que eu tenho e armazená-lo em outro lugar e consulta de lá (como o que o Google faz).

Alguém pode me dizer por onde ir?Quais são os prós e contras?

Melhor, há maneiras melhores de fazer isso?

Foi útil?

Solução

Use o lucene,
http://lucene.apache.org/java/docs/

O Apache Lucene é um alto desempenho, de texto completo mecanismo de busca da biblioteca escrito inteiramente em Java.É uma tecnologia adequada para quase qualquer aplicação que requer pesquisa de texto completo, especialmente de plataforma cruzada.

Ele está disponível na linguagem java .líquida.Ele também está disponível no php na forma de um framework zend módulo.

Lucene não o que você queria(indexação dos itens pesquisados), você tem que manter o controle de um índice lucene mas é muito melhor do que fazer uma pesquisa de banco de dados em termos de desempenho.BTW, ENTÃO a pesquisa é alimentado pelo lucene.:D

Outras dicas

Isso depende de quão abrangente do seu site é e o quanto você quer fazer.

Se você estiver executando um a um pequeno site sem mais possibilidades de adicionar uma pesquisa personalizada, deixe o google fazer o trabalho (talvez adicionar um sitemap) e usar o a pesquisa personalizada do google.

Se você executar um média do site com um motor sql usar os recursos de pesquisa do sql engine.

Se você executar alguns mais pesado pilha de software como J2EE ou .Net use Lucene, um grande, poderoso motor de busca, ou a sua .Net clone lucene.Net

Se você deseja resumo de sua pesquisa a partir do seu aplicativo e ser capaz de consultá-lo em um idioma neutro forma com XML/HTTP e JSON Api, ter um olhar para solr.Solr lucene é executado no plano de fundo, mas adiciona uma interface web para isso.

Você pode querer ter um olhar para xapian e o omega front-end.Ela é, essencialmente, um conjunto de ferramentas em que você pode construir a funcionalidade de pesquisa.

A melhor maneira de abordar isso vai depender de como você construir suas páginas.

Se eles são frequentemente constituídas a partir de um monte de diferentes registros (como eu imagino estouro de pilha páginas são), a indexação de abordagem tende a dar melhores resultados, a menos que você coloca um monte de trabalho para reconstruir eficazmente as páginas no banco de dados do lado.

A desvantagem que você tem com a indexação de abordagem é a volta em torno do tempo.Existem soluções alternativas (como o Google sitemap coisas), mas eles também são complexas para obter o direito.

Se você vai com o caminho do banco de dados, também, estar ciente de que o moderno motor de pesquisa de sistemas de funcionar muito melhor se eles têm link de dados para o processo, assim que encontrar um sistema que pode compreender as ligações entre 'páginas' na base de dados terá um efeito positivo.

Se você estiver no Microsoft platform, você pode usar o serviço de Indexação.Este integra-se facilmente com sites do IIS.

Ele tem todas as características básicas como a pesquisa de texto completo, ranking, exlcude e incluem certos tipos de arquivos, e você pode adicionar as suas próprias informações de meta, bem como através de meta tags em páginas html.

No google e você vai encontrar toneladas!

Isso é um pouco ortogonal à sua pergunta, mas eu recomendo a ideia de um RESTful de pesquisa.Isto é, para realizar uma pesquisa que nunca foi executada, o site envia uma consulta para /pesquisas/.Para executar novamente uma pesquisa, o site Recebe /pesquisas/{alguns identificação}

Existem alguns bons documentos que podem ser consultados em relação a este, por exemplo aqui.

(O que disse, eu gosto de indexação, sempre que possível, embora seja uma otimização, e, portanto, pode ser prematuro.)

Se você usa o aplicativo Java EE pilha e você está usando O Hibernate você pode usar o Bússola Quadro manter um índice pesquisável da sua base de dados.A Bússola Framework usa Lucene sob o capô.

O único problema é que você não consegue replicar o seu índice de pesquisa.Então, você precisa usar um servidor de caixas de banco de dados para armazenar as tabelas de índice ou use a mais recente grelha índice com base em mecanismos de armazenamento que foram adicionados para a Bússola Quadro 2.x.

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