Używam funkcji wyszukiwania marklogic do tworzenia strony wyszukiwania. W tej chwili używam XQuery, aby uzyskać wyniki wyszukiwania przez search:search
. Jako przykład szkielety, zobacz ten kod:Relacje danych jako kontekst wyszukiwania w 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>)
Ten szukane wszystkie treści w bazie danych, która jest w porządku w wielu przypadkach. W innych przypadkach szukam w oparciu o kolekcje z numerem cts:collection-query
. Kolekcje służą jako świetne konteksty dla moich wyszukiwań.
Teraz chciałbym ograniczyć moje wyniki wyszukiwania w oparciu o związek danych w "głównym" dokumencie. Ten "główny" dokument ma wszystkie relacje w modelu obiektowym. Jeśli ten model obiektowy ma odniesienie do dokumentu, chcę, aby ten dokument był uwzględniony w wyszukiwaniu. Zasadniczo dokumentem "głównym"/modelem jest kontekst wyszukiwania.
Próbowałem przeprowadzić burzę mózgów pomysłów na najlepszy sposób na to. Oto co mam wymyślić do tej pory, ale miałem nadzieję, kogo bardziej zaznajomieni z Marklogic (ja tylko pracuję z nim przez 6 miesięcy) może prowadzić do mnie w dobrym kierunku:
- dodać wszystkie dokumenty odniesienie w dokumencie modelu do unikatowej kolekcji. Następnie wyszukaj zapytanie na podstawie tej kolekcji. Jednak kolekcje będą musiały zostać zaktualizowane po zmianie modelu.
- Załaduj dokument modelu do mojego kodu i uzyskaj listę wszystkich odniesień i dodaj je do zapytania przez
cts:document-query
(lub temu podobne). - Restrukturyzuj moją koncepcję "modelu" w jakiś sposób w moich dokumentach XML.
Dzięki za wszelkie uwagi lub sugestie.
Skończyło się na pierwszym numerze # 1. # 2 było około 3 razy wolniejsze w mojej bazie danych. Również ze względu na rozległy model relacji w moim XML, kod dla numeru 2 zaczynał być brzydki. Dzięki istniejącym kolekcjom mogę pozwolić wszystkim programistom na łatwe ponowne użycie. Najprawdopodobniej zaimplementuję wyzwalacze w przyszłości. – Paul