Thomas Bandt

Über mich | Kontakt | Archiv

QueryParser 1.1

Ich habe meinen kleinen QueryParser auf dem Weg zur Volltextsuche ohne Volltextkatalog ein wenig erweitert. So "kann" er jetzt auch entsprechende Where-Klauseln bereitstellen, die mit DIFFERENCE() arbeiten. Die Funktion steht netterweise auch im SQL Server Express zur Verfügung, und erleichtert einem da das Leben natürlich schonmal gehörig. Beispiel:

Code:

protected void Button1_Click(object sender, EventArgs e)
{
   QueryParser qp = new QueryParser();
   qp.DefaultOperator = QueryOperator.AND;
   qp.QueryType = QueryType.Difference;
   qp.MinDifference = 2;
   Label1.Text = "SELECT * FROM table WHERE " + qp.Parse(TextBox1.Text, new string[] { "firstname", "lastname" });

   qp = new QueryParser();
   qp.DefaultOperator = QueryOperator.AND;
   qp.QueryType = QueryType.Like;
   Label2.Text = "SELECT * FROM table WHERE " + qp.Parse(TextBox1.Text, new string[] { "firstname", "lastname" });

}

Ergebnis von "edmund AND stottern OR "Stotter Ede":

SELECT * FROM table WHERE (DIFFERENCE(firstname,'edmund') >= 2 OR DIFFERENCE(lastname,'edmund') >= 2) AND (DIFFERENCE(firstname,'stottern') >= 2 OR DIFFERENCE(lastname,'stottern') >= 2) OR (DIFFERENCE(firstname,'Stotter Ede') >= 2 OR DIFFERENCE (lastname,'Stotter Ede') >= 2)  

SELECT * FROM table WHERE (firstname LIKE '%edmund%' OR lastname LIKE '%edmund%') AND (firstname LIKE '%stottern%' OR lastname LIKE '%stottern%') OR (firstname LIKE '%Stotter Ede%' OR lastname LIKE '%Stotter Ede%')

Download:

QueryParser1_1.zip (2,74 KB)


« Zurück  |  Weiter »