2016-08-09 12 views
0

I Lucene.net Suche verwende und meine Hash-Tabelle wie folgt aussieht:Lucene.net Suche nur für unterschiedliche Spaltenwerte

ID | Customer | Update 
1  | name1  | hello 
1  | name1  | hello again 
2  | name2  | how r u 
3  | name3  | hi 
3  | name3  | it is not working 

Was ich will, ist, wenn ich für „Hallo“ Ich suche Ergebnisliste deutliche bekommen von ID:

ID | Customer | Update 
1  | name1  | "hello" 

ich brauche Update Spalte nicht in Folge zu sein (dafür ist mir egal, welches Update von ID 1 in Folge sein wird) ich will nur durchsuchbar. Das einzige Ergebnis, das ich brauche, ist ID und Name des Kunden. Ich weiß, dass ich dies tun kann, indem ich result.DistinctBy(res => res.Id) von MoreLINQ verwende, aber ich möchte IndexSearcher nur nach diktint Id-Werten suchen. Gibt es eine Möglichkeit, dies zu erreichen, ohne LINQ auf Ergebnisse zu nennen? Vielleicht mit Suchargumentfilter?

Vielen Dank für Ihre Hilfe

Antwort

0

Es gibt keine Möglichkeit (die ich kenne) die verschiedenen intern Lucene hat.

Es gibt jedoch einen effizienteren Ansatz.

Die Linq-Methode bedeutet, dass Sie Ihre Zeilen/Objekte vollständig projizieren müssen, was teuer sein kann, wenn es mehr Felder in der realen Sache gibt.

Wenn Sie die Abfrage so hinzufügen, dass Lucene die Dokumente in der ID-Reihenfolge zurückgibt, können Sie einfach die ID projizieren, die Anzeige projiziert nur den Rest des Dokuments, wenn sich die ID von der vorherigen unterscheidet.

Es ist eine benutzerdefinierte Methode, aber das ist ziemlich normal.

Verwandte Themen