Quiero buscar documentos en RavenDB y hacer que los resultados de búsqueda sean más precisos para cada palabra buscada.
Este es mi código actual (simplificado). Para cada iteración en el ciclo que quiero hacer y la cláusula "y". ¿Cómo es eso posible?
Por el momento solo obtengo más resultados por cada palabra, pero quiero obtener menos resultados por palabra.
using (var session = this.ravenSession.Store.OpenAsyncSession()) { var query = session.Query<TestDocument, TestIndex>(); foreach (string word in search.Split(' ')) { query = query.Search(x => x.Brand, word, boost: 5) .Search(x => x.Model, word, boost: 3) .Search(x => x.Variant, word) .Search(x => x.Color, word); } }Resuelto : tuve que usar DocumentQuery y hacer subcláusulas para cada ciclo.
using (var session = this.ravenSession.Store.OpenAsyncSession()) { var query = session.Advanced.AsyncDocumentQuery<TestDocument>(); var words = search.Split(' '); for (int i = 0; i < words.Length; i++) { query.OpenSubclause(); query = query.Search(x => x.Brand, words[i]).Boost(5).OrElse() .Search(x => x.Model, words[i]).Boost(3).OrElse() .Search(x => x.Variant, words[i]).OrElse() .Search(x => x.Color, words[i]); query.CloseSubclause(); if (i < (words.Length - 1)) { query.AndAlso(); } } }