2011-08-10 5 views
5

Je suis vraiment apprendre les cordes sur les deux Lucene et RavenDB - je le document suivant dans Raven -RavenDB avancé Lucene requête

{ 
    "InternalEvent": { 
    "Desec": "MachineInfo: 1F8BFBFF000106A5_2103933941_00155D365607_WIN-UWJJ7OPR9TM_1, UserInfo: NT AUTHORITY\\LOCAL SERVICE_3, ProcessInfo: \\Device\\HarddiskVolume1\\Windows\\System32\\taskeng.exe, Pid: 5772, ObjInfo: , EventId: New Process Stopped", 
    "MachineInfo": "1F8BFBFF000106A5_2103933941_00155D365607_WIN-UWJJ7OPR9TM_1", 
    "UserInfo": "NT AUTHORITY\\LOCAL SERVICE_3", 
    "ProcessInfo": "\\Device\\HarddiskVolume1\\Windows\\System32\\taskeng.exe", 
    "Pid": 5772, 
    "ObjInfo": "", 
    "EventId": "New Process Stopped", 
    "Occured": "2011-08-08T23:25:31.8220000+01:00" 
    }, 
    "Key": "6c4abf6a-156e-4224-8eac-72cde756b3c6" 
} 

J'Interrogation la base de données avec -

var searchValue = "InternalEvent:Desec:(" + String.Join(" AND ", searchTerms) + ")"; 
var eventEntities = session.Advanced.LuceneQuery<EventCacheEntity>() 
            .WaitForNonStaleResultsAsOfLastWrite() 
            .Skip(0) 
            .Take(_pageLimit) 
            .Where(searchValue); 

recherche pour quelque chose comme si searchTerms a seulement un terme comme Machine qui est définitivement dans le domaine desec. Qu'est-ce que je fais mal?

Je ne suis pas trop sûr des champs imbriqués dans la syntaxe de requête Lucene- c'est-à-dire Internalevent: Desec ??

Répondre

4

La syntaxe des champs imbriqués est InternalEvent.Desec, mais je ne suis pas vraiment sûr de ce que vous essayez de faire avec les termes de recherche

+0

Je veux faire une recherche et à la place de la valeur par défaut ou la recherche. – NiladriBose

+0

Je l'ai fait fonctionner .... hmm à moitié travailler vraiment. J'ai ajouté un index statique pour le champ Desec et ai changé le fieldIndexing à analyser. et ça commence à fonctionner. Mon seul problème est que j'utilise une base de données non par défaut lorsque je crée un index en utilisant - IndexCreation.CreateIndexes (typeof (EventIndex_ByDesc) .Assembly, store); l'index est créé dans la base de données par défaut. J'ai donc dû créer l'index manuellement en utilisant l'interface du navigateur. existe-t-il un moyen de le faire par programme? – NiladriBose

+0

Résolu en utilisant - var store = new DocumentStore {Url = "http: // localhost: 8080", DefaultDatabase = "Universel"}; puis en appelant IndexCreation. Ne sait pas si c'est la manière prévue? Existe-t-il une référence d'API .chm par exemple. – NiladriBose