2009-07-14 9 views
-1

Ich möchte Volltextsuche für eine Datentabelle implementieren?Volltextsuche nach Datensatz

Gibt es irgendwelche .net-Bibliotheken, die die Indexierung/Suche im laufenden Betrieb unterstützen?

Antwort

1

Lucene.NET.

Hier ist ein Blog-Post darüber, wie ich es in meiner Anwendung verwendet habe. http://ifdefined.com/blog/post/Full-Text-Search-in-ASPNET-using-LuceneNET.aspx

+0

Dank für den Artikel zusammen paar Fragen 1) setzen muss der Index ein Plattendateiordner oder kann es alleine in Erinnerung bleiben? in meinem Fall muss ich den Index während der Lebenszeit einer bestimmten winform on-the-fly erstellen und durchsuchen 2) zeigt das Suchergebnis an, in welchem ​​Feld/Eigenschaft des Dokuments es eine Übereinstimmung gefunden hat? z.B. meine Datentabelle hat die folgenden Felder KEY_ID, Beschreibung, Date1, Date2, andere nicht-indizierten Feldern Ich möchte die Spalte (& Zeile) mit dem Text markieren gefunden ist das möglich? – Kumar

+0

# 1 - Sie können die Lucene.NET "RAMDirectory" -Klasse verwenden. Ich habe keine persönlichen Erfahrungen damit. # 2 - Ja. Sie entwerfen, welche Bezeichner in Lucenes Index gespeichert werden sollen, damit Sie die Ergebnisse wieder mit Ihren Daten verknüpfen können. –

0

hier ist eine einfache Erweiterung von DataTable, die nicht gerade "Volltextsuche" ist, aber lustig und hilfreich.

public static List<DataRow> FullTextSearch(this DataTable dataTable, string[] keywords) 
{ 

var q = dataTable.AsEnumerable().Where<DataRow>(row => keywords.All(keyword =>row.ItemArray.Select(p => p.ToString()).Any<string>(s => s.Contains(keyword)))); 

return q.ToList(); 

}