Ich versuche, alle Beiträge in RavenDB zu finden, ein Wort enthält (Index gibt es)Was für RavenDB Suchmethode in F # die korrekte Syntax ist
Hier ist eine Abfrage, die findet alles funktioniert, die mit ‚Liv‘ beginnt
let post = query {
for post in session.Query<MyType>() do
where (post.Text.StartsWith("Liv"))
select post
}
Ein Versuch string.Contains zu verwenden() -Methode als Bedingung Wo Schließung, NotSupportedException werfen. Here
So versuche ich, Suchmethode zu verwenden, wo:
Expression<Func<T, object>> fieldSelector,
// Expression marking a field in which terms should be looked for.
C# -Äquivalent von docs:
List<User> users = session
.Query<User>("Users/ByNameAndHobbies")
.Search(x => x.Name, "Adam")
.Search(x => x.Hobbies, "sport")
.ToList();
war mein erster Versuch, mit zu gehen
let x = session.Query<MyType>(index).Search((fun xe -> xe.Text), "Liv")
Aber Fehler bekommen Bec ause erwartet es object out. Versucht, gesenkten String zu Objekt (was für eine seltsame Idee), aber immer:
kann nicht verstehen, wie x übersetzen => x.Invoke (xe)
Im Moment, ich bin aus Ideen. Ich soll das Feld für die Suche markieren und das Objekt zurückgeben. Irgendwelche Ideen?
Vielen Dank.
EDIT 1: Mein Ausdruck. Ruft die Laufzeitangabe InvalidCastException ab, weil die Zeichenfolge nicht in obj umgewandelt werden kann.
let expr =
<@ Func<MyType, _>(fun xe -> xe.Text) @>
|> LeafExpressionConverter.QuotationToExpression
|> unbox<System.Linq.Expressions.Expression<Func<MyType, _>>>
ich ziemlich sicher bin, dass 'x => x.Name' in' Search' ist kein 'Func' 'aber Expression >', so dass Sie entweder müssen Ausdrücke oder Zitate verwendet werden, wenn es F # kompatible API gibt ... –
Gemacht redigieren. Die Sache ist ... Spaß xe -> xe.Text gibt String zurück, weil Text String ist. Aber die Funktion erwartet obj. Downcasting hat nicht funktioniert, weil "Kann nicht verstehen, wie x => x.Invoke (xe.Text) zu übersetzen". Ich bin mir sehr unsicher, was "ein Feld markieren" hier wirklich bedeutet. – Dimka
Eine Option besteht darin, die Lucene-Abfrage-API zu verwenden, die den Eigenschaftsnamen als Zeichenfolge verwendet. Related: http://stackoverflow.com/questions/24625040/search-query-in-ravendb – Jay