2009-05-02 5 views
0

Ich versuche, Linq To Lucene in meinem Projekt zu implementieren, aber wenn ich versuche, nach etwas zu suchen, bekomme ich immer ein Enumeration yielded no results Ergebnis, und wenn ich debugge und versuche, meine im Watch Fenster zu öffnen, bekomme ich diese Nachricht:Linq zu Lucene: "Das Prädikat eines Lucene Term kann nicht die leere Zeichenfolge sein."

Das Prädikat eines Lucene-Ausdrucks kann nicht die leere Zeichenfolge sein.

Ich habe versucht, in Google für diese Suche, aber anscheinend gab es keine Ergebnisse!

Hat schon mal jemand diese Nachricht gesehen? Und wie kann ich es reparieren? da zur Zeit alle Daten

[Update]

Anscheinend ist das Problem ist, wenn ich eine der Erweiterungsmethoden bin nicht mit der Rückkehr es (Between, Match, Like etc ...), die in Lucine.Linq.Extensions zu finden ist. Nehmen Sie das folgende Beispiel:

var db = new MusicRepo_DB_IndexContext(@"C:\MusicRepoDB_index", 
             new MusicRepo_DBDataContext()); 

Die folgende Abfrage ein Ergebnis zurückgibt: db.Artists.Where(a => a.Name == "Camel");

Aber dieses nicht: db.Artists.Where(a => a.Search("Camel"));

[Update]

Bei der weiteren Prüfung, ich erkannte, dass die Erweiterungsmethode Match tatsächlich ein Ergebnis liefert, wheres wie die anderen (Search,) 210) nicht. Ich kämpfe immer noch mit diesem Problem

Antwort

1

Ich benutze es auch in meinem Projekt und meine Überzeugung ist, dass diese Nachricht angezeigt wird "Das Prädikat eines Lucene Term kann nicht die leere Zeichenfolge sein.", Weil Lucene nicht akzeptiert ein leerer Begriff als Suchkriterium.

Das ist, was mir passiert ist:

(Northwind-Datenbank) Wenn ich

var mmCustomers = from c in dbi.Get<Customer>() 
         where c.ContactTitle == "Marketing Manager"      
         select c; 

es funktioniert gut, aber suchen versucht, wenn ich versuche:

var mmCustomers = from c in dbi.Get<Customer>()      
         select c; 

es zeigt die "Das Prädikat eines Lucene-Ausdrucks kann nicht die leere Zeichenfolge sein." Fehler.

Hoffe es hilft