2009-07-02 13 views
1

Je sais que la recherche en elle-même est un domaine énorme, ce qui semble aussi être mon problème. Je ne sais pas par où commencer.Des algorithmes courants pour l'indexation/la recherche dans mes données?

Voici le scénario: J'ai beaucoup de magasins qui emploient beaucoup de gens et qui ont beaucoup de produits différents à vendre. Je dois créer une option de recherche de texte unique pour mon site. Ce champ de texte doit rechercher dans les métadonnées des magasins (adresse, nom, etc.), les métadonnées des produits (nom, type, etc.) et par les employés.

Je reconnais que cette option de recherche sera largement utilisée sur le site, donc elle doit fonctionner très bien (pas de recherche dans chaque colonne, string.Contains() etc.). À l'heure actuelle, je pense à des lignes d'étiquettes pour chaque entité de la base de données, qui pointent vers la boutique/l'employé/le produit, mais je ne suis pas sûr que ce type de duplication de données soit facile à maintenir . Une autre option serait de mettre en cache des queuries populaires, cependant, je ne pense pas que les queuries soient aussi populaires que les autres. Je suis sûr que je ne suis pas le premier à avoir ce genre de problème. Existe-t-il des stratégies communes, des librairies tierces, des sites de tiers ou juste des indices pour moi?

Merci à l'avance :)

+0

Pourquoi voudriez-vous regarder les métadonnées? – Kevin

Répondre

3

Avez-vous regardé Lucene? C'est open-source et la version Java est mature. Cela pourrait grandement vous aider à indexer et à rechercher vos données organisées. Je crois qu'il existe des versions pour .Net, C (avec des liaisons Perl/Ruby), et Python. En ce qui concerne la documentation - pour la version Java au moins il y a quelques livres là-bas, y compris this one.

J'ai eu de bonnes expériences en l'utilisant pour indexer des données relationnelles stockées dans une base de données de sorte qu'il puisse être recherché d'une manière ad hoc. Toutefois, il peut également explorer et indexer des données basées sur des fichiers.

+0

Ça a l'air vraiment intéressant: O La documentation me semble un peu pauvre, mais je vais définitivement me pencher dessus :) – cwap

+1

Lucene est assez puissante mais oui la documentation est un peu foireuse. Il devrait y avoir une assez grande communauté pour le suivre, car il est utilisé dans de nombreuses applications. – Brian

1

Vous recherchez un moteur de recherche en texte intégral. Lucene, tel que recommandé par teabot est un excellent outil pour cela. Un projet basé sur Lucene (et à vendre bien sûr) est DBSight, qui fournit des outils et des interfaces pour administrer l'aspect/format des résultats de recherche, ainsi que la configuration des index dans Lucene en fonction des résultats des requêtes de base de données vous vous définissez.

Je me sens comme un shill maintenant. Mais j'ai essayé et ça marche plutôt bien.

Questions connexes