Täglich habe ich 5 Millionen oder so einzigartige Keywords mit einer Anzahl von Impression für jeden einzelnen. Ich möchte in der Lage sein, diese Schlüsselwörter durch bestimmte Wörter nach oben zu sehen, also zum Beispiel, wenn ich "ipod nano 4GB" habe, möchte ich in der Lage sein, das herauszuziehen, wenn ich nach "ipod", "nano" oder "4GB" suche. mySQL kann anscheinend nicht so viele Daten verarbeiten, wie ich will, ich habe Berkeley ausprobiert, aber das scheint mit zu vielen Zeilen zu stürzen und es ist langsamer. Ideen?Schnellste Möglichkeit zum Suchen von Keywords. Jede Sprache, jedes System
Antwort
können Sie freien Text auf mssql versuchen. http://msdn.microsoft.com/en-us/library/ms177652.aspx
Beispiel query:
SELECT TOP 10 * FROM searchtable
INNER JOIN FREETEXTTABLE(searchtable, [SEARCH_TEXT], 'query string') AS KEY_TBL
ON searchtable.SEARCH_ID = KEY_TBL.[KEY]
ORDER BY KEY_TBL.RANK DESC
Josh
Ein Lucene Index funktionieren könnte. Ich habe es früher für ziemlich große Datensätze benutzt. Es ist in Java entwickelt, aber es gibt auch eine .NET-Version.
Ich bin ziemlich glücklich mit the Xapian search engine library. Obwohl es sich anhört, als ob es für dein Szenario übertrieben wäre, möchtest du vielleicht einfach deine Daten in eine große Hashtable umwandeln, wie vielleicht memcached?
Haben Sie versucht fulltext search in MySQL? Denn wenn du es mit LIKE Vergleich ausprobiert hast, sehe ich, warum es langsam war :).
Die Arbeitsbelastung und Suchmuster für PostgreSQL mit integrierten Volltextsuche Funktionalität (integriert, wie von 8,4, die in RC-Status ist jetzt. Es ist eine Contrib-Modul, dass vor.) Trivial ist
ich, dass zur Zeit bester Weg guesst benutzt Lucene. Meine Firma verwendet für große Datenbanken und gleichzeitige Anfrage (ca. 300 req/s). – Zanoni