Ich habe ein Feld ergibt, das ist, alsRavenDB: .In() und .Where() unterschiedliche Ergebnisse
indexiertIndex(x => x.Status, FieldIndexing.Default);
in einer Sammlung mit insgesamt 2566 Datensätzen.
Nun, wenn ich so abfragen:
var query = _ravenSession
.Query<MyIndex.ReduceResult, MyIndex>()
.Statistics(out stats);
query = query.Where(x => x.Status != "inactive" && x.Status != "invalid" && x.Status != "sold");
ich ein Gesamtergebnis Zahl von 2512.
bekommen, aber wenn ich so abfragen:
query = query.Where(x => !x.Status.In("inactive", "invalid", "sold"));
ich ein Gesamtergebnis erhalten Zählung von 2520. Wie kann diese Zählung anders sein?
ich sehen kann, dass die erste Abfrage
übersetzt {((((-Status: inaktiv und Status: *) UND -Status: ungültig)) UND -Status: verkauft)}
und die zweite:
{(: uND - @ in` < der Status >: (inaktiv, ungültig, verkauft))}
Danke. Aus Sicht von C# sollten diese beiden Ausdrücke identisch sein. Und ich bin nicht so tief in Lucene-Syntax, die mich abwarf. Wenn ich Sie richtig verstehe, enthält die erste Abfrage (wenn sie verarbeitet wird) implizit eine Nullprüfung. Und ich hatte wirklich Null-Werte auf dem Feld für ein paar Datensätze –