Comment puis-je mettre en œuvre la Fonctionnalité de Recherche dans un site web?[fermé]

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

  •  09-06-2019
  •  | 
  •  

Question

Je veux implémenter la fonctionnalité de recherche pour un site web (à supposer qu'il est semblable à un SI).Je ne veux pas utiliser Google recherche de trucs comme ça.

Ma question est:

Comment puis-je mettre en œuvre cette?

Il existe deux méthodes je suis conscient de:

  1. Recherche de toutes les bases de données de l'application lorsque l'utilisateur donne sa requête.
  2. Index de toutes les données que j'ai et de le stocker quelque part et d'autre de la requête à partir de là (comme quoi Google n').

Quelqu'un peut me dire où aller?Quels sont les avantages et les inconvénients?

Mieux, il y a aucune meilleure des façons pour ce faire?

Était-ce utile?

La solution

Utiliser lucene,
http://lucene.apache.org/java/docs/

Apache Lucene est une haute performance, texte complet moteur de recherche de la bibliothèque entièrement écrit en Java.C'est une technologie appropriée pour presque n'importe quelle application qui nécessite la recherche de texte intégral, en particulier croix-plate-forme.

Il est disponible en java et .net.Il est également disponible en php sous la forme d'un framework zend module.

Lucene est-ce que vous voulais(indexation des éléments recherchés), vous devez garder une trace de l'index lucene mais il est beaucoup mieux que de faire une recherche de base de données en termes de performances.BTW, SI la recherche est alimenté par lucene.:D

Autres conseils

Il dépend de la façon dont globale de votre site web et combien vous voulez le faire vous-même.

Si vous exécutez une petit site web sans plus de possibilités pour ajouter une recherche personnalisée, de laisser google faire le travail (peut-être ajouter un sitemap) et d'utiliser le recherche personnalisée google.

Si vous exécutez une moyen site avec un moteur sql utiliser les fonctions de recherche de votre moteur sql.

Si vous exécutez certains plus lourd pile logicielle comme J2EE ou .Net use Lucene, un grand, un puissant moteur de recherche, ou son .Net clone lucene.Net

Si vous voulez résumé de votre recherche à partir de votre application et être capable de faire une requête dans une langue neutre avec XML/HTTP et JSON Api, jetez un oeil à solr.Solr pistes de lucene dans le fond, mais ajoute une belle interface web pour elle.

Vous pouvez avoir un coup d'oeil à xapian et la omega avant la fin.C'est essentiellement une boîte à outils sur lequel vous pouvez construire la fonctionnalité de recherche.

La meilleure façon d'aborder cette question dépendra de la façon dont vous construisez vos pages.

Si elles sont souvent composées de beaucoup de différents dossiers (comme je l'imagine débordement de pile pages), l'indexation approche est susceptible de donner de meilleurs résultats, sauf si vous avez mis beaucoup de travail dans efficacement à reconstruire les pages sur le côté de la base de données.

L'inconvénient que vous avez avec l'indexation approche est le temps de rotation.Il existe des solutions de contournement (comme le Google sitemap trucs), mais ils sont aussi complexes à obtenir le droit.

Si vous allez avec le chemin de base de données, gardez à l'esprit que les moteurs de recherche les systèmes fonctionnent beaucoup mieux si elles ont un lien de données à traiter, afin de trouver un système qui peut comprendre les liens entre les "pages" dans la base de données aura un effet positif.

Si vous êtes sur Microsoft plattform vous pouvez utiliser le service d'Indexation.Cela s'intègre très easliy avec les sites web IIS.

Il dispose de toutes les fonctionnalités de base comme de la recherche plein texte, classement, exlcude et comprennent certains types de fichiers et vous pouvez ajouter vos propres méta-informations via des balises meta dans le code html des pages.

Google et vous trouverez des tonnes!

C'est un peu orthogonal à votre question, mais je vous recommande fortement l'idée d'un séjour de recherche.C'est-à effectuer une recherche qui n'a jamais été effectuée, le site enregistre une requête pour /recherche/.Pour ré-exécuter une recherche, le site Reçoit /recherche/{certains id}

Il y a quelques bons documents à être trouvé à ce sujet, par exemple ici.

(Cela dit, j'aime l'indexation, si possible, si c'est de l'optimisation, et donc peut-être prématurée.)

Si l'application utilise le Java EE de la pile et que vous utilisez Hibernate vous pouvez utiliser l' Boussole Cadre maintenir un index de recherche de votre base de données.La Boussole Framework utilise Lucene sous le capot.

Le seul hic, c'est que vous ne pouvez pas répliquer votre index de recherche.Si vous avez besoin d'utiliser une base de données en cluster pour tenir la table d'index ou d'utiliser la plus récente de la grille en fonction de l'indice de mécanismes de stockage qui ont été ajoutés à la Boussole Framework 2.x.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top