Suche Datenbank - ASP.NET MVC C#

Ich bin versucht zu implementieren, die vollständige Suchfunktion in meine ASP.NET MVC (C#, Linq-to-Sql) website.

Der Ort besteht aus etwa 3-4 Tabellen, die über 1-2 Spalten, die ich durchsuchen möchten.

Dies ist, was ich habe, so weit:

    public List<SearchResult> Search(string Keywords)
    {
        string[] split = Keywords.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
        List<SearchResult> ret = new List<SearchResult>();
        foreach (string s in split)
        {
            IEnumerable<BlogPost> results = db.BlogPosts.Where(x => x.Text.Contains(s) || x.Title.Contains(s));

            foreach (BlogPost p in results)
            {
                if (ret.Exists(x => x.PostID == p.PostID))
                    continue;

                ret.Add(new SearchResult
                {
                    PostTitle= p.Title,
                    BlogPostID = p.BlogPostID,
                    Text=p.Text
                });

            }
        }
        return ret;
    }

Wie Sie sehen können, habe ich eine foreach-für die keywords und eine innere foreach-das läuft über eine Tabelle (ich wiederhole es für jede Tabelle).

Scheint dies inefficent und ich wollte wissen, ob es gibt ein besserer Weg, um eine Suche nach Methode für eine Datenbank.

Also, was kann ich tun, um die Spalten in der Datenbank, so dass Sie durchsucht werden können schneller? Lese ich etwas über die Indizierung von Ihnen, ist, dass nur die "Full-text indexing" True/False Feld sehe ich im SQL-Management-Studio?

InformationsquelleAutor Omar | 2009-10-03
Schreibe einen Kommentar