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?
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?
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
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();
}
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
# 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. –