2008-10-30 5 views
2

J'ai une base de données SQL avec plusieurs tables, et je travaille à la création d'une fonction de recherche. En plus d'avoir plusieurs requêtes pour les différentes tables, y a-t-il une manière différente d'effectuer cette fonction de recherche?Meilleure façon de créer une fonction de recherche ASP.NET et serveur SQL


Je devrais probablement ajouter qu'une grande partie de mon contenu est piloté par une base de données pour faciliter l'entretien. Lucene ne travaillera pas pour ça, n'est-ce pas?

Répondre

3

Différentes approches à considérer:

1) requêtes multiples précuite, comme vous l'avez décrit.

2) SQL dynamique que vous avez assemblé à la volée en fonction de critères définis par l'utilisateur.

3) Si du texte est impliqué, basé sur la recherche de texte intégral SQL Server ou Lucene.

Dans mon application open source BugTracker.NET, je fais les 2 et 3 (en utilisant Lucene.NET).

J'utilise comment je documenté Lucene.NET ici: http://www.ifdefined.com/blog/post/2009/02/Full-Text-Search-in-ASPNET-using-LuceneNET.aspx

+0

Où puis-je en savoir plus sur Lucene? Je ne suis pas familier avec ça. – Anders

+0

Google, bien sûr. A l'origine, je pense que c'était en Java, mais Lucene.NET est un port C#. J'ai pu passer de ne rien savoir à avoir intégré dans mon application en un week-end. –

0

Puisque vous avez marqué la question avec Asp.net Je suppose que vous voulez rechercher vos pages Web. Dans ce cas, vous pouvez utiliser Indexing Server pour effectuer facilement des recherches en texte libre qui recherchent le code html généré et tous les mots-clés que vous avez configurés. Comme l'a suggéré Corey Trager, utiliser Lucene.NET est également une option. Il a une bonne réputation d'être rapide et assez facile à utiliser.

0

Bien que les autres réponses fournissent de bonnes suggestions telles que l'utilisation de Lucene, j'ai beaucoup préféré utiliser une méthode de mise en cache personnalisée.

Donc, pour un site Web que j'aider à créer, nous en cache les données interrogeables chaque couple d'heures, de nombreuses tables, dans une table simple avec des colonnes telles que:

  • URL
  • Point/Nom de la page
  • Mots-clés principaux
  • Texte seulement Contenu
  • date de mise à jour

J'écrirais alors mon instruction SQL pour rechercher ce champ en utilisant différentes fonctions pour déterminer le rang.

0

Vous voudrez peut-être consulter ce post que j'ai écrit sur l'écriture de requêtes de texte intégral, son en C#, mais son easilly portable, ou simplement le coller dans une bibliothèque et l'utiliser comme tel.

How to build an SQL full text index search term in c#