Io utilizzo la funzionalità di ricerca di marklogic per creare una pagina di ricerca. A partire da ora, sto eseguendo un XQuery per ottenere risultati di ricerca tramite search:search
. Come esempio ossa nude, vedi questo codice:Relazioni dati come contesto per la ricerca in Marklogic
xquery version "1.0-ml";
import module namespace search = "http://marklogic.com/appservices/search"
at "/MarkLogic/appservices/search/search.xqy";
search:search('test',
<options xmlns='http://marklogic.com/appservices/search'></options>)
Questa ricerca cerca tutti i contenuti nel database, che va bene in molti casi. In altri casi, cerco in base alle raccolte con cts:collection-query
. Le collezioni servono come grandi contesti per le mie ricerche.
Ora, desidero limitare i risultati della ricerca in base a una relazione di dati in un documento "principale". Questo documento "principale" ha tutte le relazioni in un modello a oggetti. Se quel modello di oggetti ha un riferimento a un documento, voglio che il documento sia incluso nella ricerca. In sostanza, il documento "principale"/modello è il contesto della ricerca.
Stavo cercando di scambiare idee sul modo migliore per farlo. Ecco cosa mi è venuta in mente finora, ma speravo che qualcuno più familiarità con Mark Logic (Ho solo lavorato con lui per 6 mesi) mi potrebbe portare in una buona direzione:
- Aggiungi tutti i documenti referenziato nel documento del modello a una collezione unica. Quindi cerca la ricerca in base a quella raccolta. Tuttavia, le collezioni dovrebbero essere aggiornate con la modifica del modello.
- Caricare il documento del modello nel mio codice e ottenere un elenco di tutti i riferimenti e aggiungerli a una query da
cts:document-query
(o simili). - Ristruttura il mio concetto di "modello" in qualche modo nei miei documenti XML.
Grazie per qualsiasi input o suggerimenti.
Terminato andando con # 1. # 2 era circa 3 volte più lento nel mio database. Inoltre, a causa del vasto modello di relazione nel mio XML, il codice per # 2 stava iniziando a diventare brutto. Con le raccolte in atto, sono in grado di consentire a tutti gli sviluppatori di riutilizzare con facilità. Molto probabilmente implementerò i trigger in futuro. – Paul