2009-05-06 12 views

Antwort

3

Wenn Sie "Tag-Suchsystem" sagen, gehe ich davon aus, dass Sie die Fähigkeit in einem sozialen Netzwerk meinen Benutzern erlauben, Inhalte zu taggen und dadurch die Dinge, die auf Ihrer Website am beliebtesten sind, durch ein Tag zu sprudeln Wolke. Außerdem können Ihre Nutzer über getaggte Inhalte usw. navigieren.

Ich mag es, eine SystemObjects-Tabelle zu erstellen, die die verschiedenen Tabellen in meinem System enthält, auf die Tags angewendet werden können (oder Kommentare oder Bewertungen usw.). Dadurch kann ich ein generisches Tagging-System verwenden, das meinen gesamten Bereich umfasst Datenbank. Dann hätte ich auch eine SystemObjectTags-Tabelle, die einen Verweis auf die SystemObjectID hätte (mir sagen würde, welche Tabelle den Datensatz hat, an dem ich interessiert bin) sowie die SystemObjectRecordID (die mir sagt, an welchem ​​spezifischen Datensatz ich interessiert bin). Von dort habe ich alle meine Detaildaten in Bezug auf die Tags und was wurde markiert. Ich möchte dann eine laufende Liste der Tag-spezifischen Informationen in einer Tags-Tabelle führen, die das eindeutige Tag (String-Wert eines Tags) die TagID (die die SystemObjectTags-Tabelle verweist), die Anzahl der Tags-Verwendung über das System (a summierter Wert aller Verwendungen) usw. Wenn Sie eine Website mit hohem Datenverkehr haben, sollten diese Daten in Ihrem Cache gespeichert werden, damit Sie die Daten nicht zu häufig treffen.

Mit diesem Subsystem können Sie dann zu den Suchfunktionen wechseln. Sie haben alle Daten, die Sie mit diesen drei Tabellen benötigen, um leicht Filterung, Suche usw. durchführen zu können. Sie könnten jedoch feststellen, dass hier so viele Daten vorhanden sind und dass die Tabellen so generisch sind, dass Ihre Suchen nicht so sind schnell wie eine optimierte Tabellenstruktur sein könnte. Aus diesem Grund schlage ich vor, dass Sie einen Lucene.NET-Index verwenden, um alle Ihre durchsuchbaren Daten zu speichern. Lucene.NET bietet eine sehr schnelle Lesezeit und bietet viel mehr Flexibilität in Suchalgorithmen als SQL Server Freetext.

Dies würde Ihnen dann ermöglichen, die Filterung Ihrer Inhalte durch Tags, die Suche nach Inhalt nach Tag, Tag-Zahlen, etc. Lucene.net ist ein großes unheimliches Thema obwohl! Bereiten Sie sich darauf vor, etwas zu lesen, um Ihre Grundlagen zu hinterfragen.

+0

Die Methode @Andrew erklärt wird auch in seinem Buch ASP.NET Social Networking Kapitel 11 beschrieben. Andrew auf Seite 333 in dem Codebeispiel GetSystemObjectSpecificTags, ist diese Methode innerhalb des Tags Repository? –

+0

Ich würde wahrscheinlich noch einmal untersuchen, wie das ganze System an diesem Punkt funktioniert. Werfen Sie einen Blick auf CQRS, DDDD (ja ein viertes D) und Ereignisspeicher. Außerdem - schauen Sie nach, was ein Denormalizer ist und wie er eine Leseschicht korrigieren könnte. –

0

Eine Option, die wir verwenden, besteht darin, unsere "Tags" in die Meta-Schlüsselwörter auf der Seite einzufügen, und dann verwenden wir Bing für unsere Suche.

http://msdn.microsoft.com/en-us/library/dd251056.aspx

Unser Architekt hat es am besten. "Lassen Sie die Suchmaschinen tun, was sie am besten können. Suche."

Sie können die Suche nur auf Ihre Website beschränken, die Ergebnisse zurückziehen und sie selbst anzeigen ... auf Ihrer eigenen Seite mit Ihrer eigenen Formatierung.

Der einzige Nachteil besteht darin, dass Sie Ihre Suche nicht vollständig testen können, bis Ihre Website aktiv und indexiert ist.

Verwandte Themen