2014-07-08 4 views
0

Je voudrais connaître la requête de recherche pour la condition ci-dessous. Je l'ai créé un index appelé MeetingEventIndex comme ci-dessous:Requête de recherche dans RavenDB

public class MeetingEventIndex : AbstractIndexCreationTask<mngtMeetingEvent> 
{ 
    public MeetingEventIndex() 
    { 
    Map = docs => from d in docs select new {d.meetingroomid, d.text, d.details}; 

    Index(x=>x.meetingroomid, FieldIndexing.Analyzed); 
    Index(x=>x.text, FieldIndexing.Analyzed); 
    Index(x=>x.details, FieldIndexing.Analyzed); 
    } 
} 

Je suis en train de créer une requête de recherche comme ci-dessous « Rechercher le terme dans le champ de texte ou les détails et meetingroomid == 123 »

docsession.Query<mngtMeetingEvent, MeetingEventIndex>() 
.Search(x=>x.text , search) 
.Search(x=>x.details, search. options: SearchOptions.Or) 
.Search(x=>x.meetingroomid, "123", option.SearchOptions.And) 
.ToList() 

Mais cela ne renvoie aucun résultat.

Fondamentalement, je cherche ((searchterm dans le champ de texte || searchterm dans le champ des détails) et mrcode dans le champ meetingroomid).

Aidez-nous s'il vous plaît.

Répondre

0

Votre requête est probablement plus facilement exprimée en LuceneQuery, à la place:

docsession.Advanced..LuceneQuery<mngtMeetingEvent, MeetingEventIndex>() 
    .OpenSubClause() 
     .Search("text", search) 
     .OrElse() 
     .Search("details", search) 
    .CloseSubClause() 
    .AndAlso() 
    .WhereEquals("meetingroomid", "123") 
    .ToList();