Gibt es bessere Suchmethoden anstelle von string.Contains ("keyword") mit asp.net?

8

Zum Beispiel möchten die Nutzer unserer App nach Produkten suchen, indem sie ein Schlüsselwort von productName eingeben.

Die Products-Tabelle der SQL Server-Datenbank enthält ca. 10 Millionen Datensätze.

Gibt es bessere und leistungsfähigere Suchmethoden anstelle von productName.Contains ("keyword") mit asp.net C # zu implementieren?

Ich verwende jetzt gespeicherte Prozeduren, aber linq to sql oder entity framework sind auch eine Möglichkeit.

    
Mike108 03.04.2010, 06:57
quelle

4 Antworten

5

Wenn Sie eine bessere Leistung wünschen, können Sie sich eine Volltextsuche ansehen. Beachten Sie, dass dies derzeit von LINQ to SQL nicht unterstützt wird. Sie können jedoch SQL in einer gespeicherten Prozedur schreiben und die gespeicherte Prozedur von Ihrer Anwendung aus aufrufen. Die akzeptierte Antwort für diese StackOverflow-Post empfiehlt, diesen Artikel zu lesen >.

    
Mark Byers 03.04.2010, 07:01
quelle
3

Nun könnte man dies von der db-Seite mit einem LIKE

erreichen

LIKE (Transact-SQL)

Etwas wie

%Vor%     
Adriaan Stander 03.04.2010 06:59
quelle
0

Sie sollten nie mehr Daten von Ihrer Datenbank abrufen, als Sie benötigen. Daher ist es am besten, wenn Sie Ihre Zeilen innerhalb der Datenschicht (dh Ihrer gespeicherten Prozedur) einschränken. Sie können dies tun, indem Sie nur übereinstimmende Zeilen zurückgeben:

%Vor%

Dabei ist @keyword ein Parameter für Ihre Speicherprozedur.

Beachten Sie jedoch, dass die Leistung mit LIKE langsam sein kann, da sie die gesamte Tabelle lesen muss. Sie können die Leistung besser steigern, indem Sie Produkte, die starten , mit dem Schlüsselwort

vergleichen %Vor%

Hinweis Ich habe das '%' vor @keyword entfernt. Dadurch kann SQL Server einen Index für die ProductName-Spalte verwenden, um die Zeilen viel schneller zu finden!

Für weitere Hilfe, bitte posten Sie Ihre gespeicherte Prozedur ...

    
Alex 03.04.2010 12:28
quelle
0

Könnte Overkill sein, aber schau mal lucene.net , ich glaube es ist was Stack Overflow für seine Suche benutzt

    
Daniel Powell 22.12.2011 03:56
quelle

Tags und Links