Я просто хотел создать запрос нефильтрованный whitespace-sensitive
cts и почему-то не может заставить его работать (без других ограничений).
Это моя среда тестирования:
xquery version "1.0-ml";
xdmp:document-insert("test1.xml", <test><title>test word</title></test>);
xdmp:document-insert("test2.xml", <test><title>test-word</title></test>);
cts:search(//test, cts:element-value-query(xs:QName("title"), "test word", ("whitespace-sensitive")), ("unfiltered"))
У меня есть два документа, которые отличаются только одним символом -
.Выполнение этого поиска cts возвращает оба документа.Глядя на план выполнения, все становится странным.Окончательный план показывает это:
<qry:term-query weight="1">
<qry:key>5029803220044614354</qry:key>
<qry:annotation>element(title,value("test","word"))</qry:annotation>
</qry:term-query>
Кажется, что MarkLogic ищет два слова test
и word
без пробелов.Кажется, он не использует опцию whitespace-sensitive
.Только если я добавлю еще три параметра «с учетом регистра», «с учетом диакритики» и «с учетом пунктуации», будет выполняться поиск с учетом пробелов.Удаление любого из параметров приводит к нечувствительному к пробелам поиску:
xdmp:plan(cts:search(//test, cts:element-value-query(xs:QName("title"), "test word", ("case-sensitive", "diacritic-sensitive", "punctuation-sensitive", "whitespace-sensitive")), ("unfiltered")))
=> ...
<qry:term-query weight="1">
<qry:key>11298961959398038325</qry:key>
<qry:annotation>element(title,value("test"," ","word"))</qry:annotation>
</qry:term-query>
Не понимаю ли я параметр «чувствительный к пробелам»?
Использование MarkLogic 9.8-0.