cts:value-co-вхождения и cts: опция запроса
Я пытаюсь найти применение cts:value-co-occurrences
свойства данного документа для данной строки поиска. Когда я выполняю обычный поиск, я получаю 546 результатов назад, но когда я делаю с cts:value-co-опроявлением, я получаю только 3 документа. Ниже приведен мой код
xquery version "1.0-ml";
declare namespace html = "http://www.w3.org/1999/xhtml";
declare namespace prop = "http://marklogic.com/xdmp/property";
declare namespace meta = "http://ir.abbivenet.com/content-repo/metadata";
import module namespace search = "http://marklogic.com/appservices/search" at "/MarkLogic/appservices/search/search.xqy";
import module namespace functx = "http://www.functx.com" at "/MarkLogic/functx/functx-1.0-doc-2007-01.xqy";
let $q := "(TNF)"
let $options :=
<options xmlns="http://marklogic.com/appservices/search">
<constraint name="collection">
<collection prefix=""/>
</constraint>
<constraint name="properties">
<properties />
</constraint>
<term>
<term-option>case-insensitive</term-option>
<term-option>punctuation-insensitive</term-option>
<term-option>whitespace-insensitive</term-option>
<term-option>wildcarded</term-option>
</term>
<return-facets>false</return-facets>
<return-values>false</return-values>
<return-constraints>false</return-constraints>
<return-frequencies>false</return-frequencies>
<return-qtext>false</return-qtext>
<search-option>unfaceted</search-option>
<search-option>score-simple</search-option>
</options>
let $start := 1
let $page-length :=1000000
let $query-original := cts:query(search:parse($q, $options))
let $m := cts:value-co-occurrences(
cts:element-reference(xs:QName('meta:id')),
cts:uri-reference(),
('map','properties'), $query-original)
return $m
Это возвращает только 3 результата.. но если я сделаю следующее, я получу 546 результатов
let $result := search:search($q, $options, $start, $page-length)
return $result
Все документы имеют собственность <id>
, поэтому я не понимаю, почему разница.. Я понимаю, я использую map
, так вернется или должен вернуть уникальный <id>
ключи.. если это так, я должен получить 241 результат, а не 3.
1 ответ
Это звучит как search:search
смотрит только на фрагменты документа, а ваш cts:values
а также cts:value-co-occurrences
звонки оба смотрят только на свойства фрагментов.
Если $query(-original)
предназначен для работы с фрагментами документа, обернуть его в cts:document-fragment-query
, Если вы хотите, чтобы он работал с фрагментами свойств, оберните его в cts:properties-fragment-query
(просто чтобы убедиться).
Так как вы используете search:parse
Вы также можете настроить, чтобы запустить против определенного fragment-scope
, Вы можете указать этот параметр на верхнем уровне как в параметрах, так и внутри ограничений.
НТН!