2011-08-10 19 views
5

estoy realmente aprendiendo las cuerdas en tanto Lucene y ravendb - Tengo el siguiente documento en el cuervo -RavenDB avanzó Lucene consulta

{ 
    "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" 
} 

Me estoy consultando la base de datos con -

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

búsqueda para algo como si searchTerms solo tiene un término como Machine que definitivamente está en el campo desec. ¿Qué estoy haciendo mal?

No estoy muy seguro acerca de los campos anidados en la sintaxis de la consulta de lucene, es decir, Internalevent: Desec ??

Respuesta

4

La sintaxis de los campos anidados es InternalEvent.Desec, pero no estoy realmente seguro de lo que está tratando de hacer con los términos de búsqueda

+0

quiero hacer una búsqueda y en lugar de la predeterminada o búsqueda. – NiladriBose

+0

Lo hice funcionar ... hmm medio trabajo realmente. Agregué un índice estático para el campo Desec y cambié el campoIndexing por analizado. y comienza a funcionar. Mi único problema es que estoy usando una base de datos no predeterminada cuando creo un índice usando - IndexCreation.CreateIndexes (typeof (EventIndex_ByDesc) .Assembly, store); el índice se crea en la base de datos predeterminada. Entonces tuve que crear el índice manualmente usando la interfaz del navegador. ¿Hay alguna manera de hacer esto programáticamente? – NiladriBose

+0

Resuelto usando - var store = new DocumentStore {Url = "http: // localhost: 8080", DefaultDatabase = "Universal"}; y luego llamar a IndexCreation. ¿No sabes si esta es la manera prevista? ¿Hay una .chm de referencia de API, por ejemplo? – NiladriBose