У меня есть запрос для извлечения автозаполнения из XML, он отлично работает в течение 3 или более символов .. но очень медленно в течение 1 или 2-х символов ..поиска Cts медленно в течение одного или двух символов
Вот XQuery, который Я использую, любая коррекция будет оценена ..
xquery version "1.0-ml";
declare default function namespace "local";
declare default collation "http://marklogic.com/collation/en/S1";
declare variable $search-term := xdmp:get-request-field("query", "b");
declare function getWildCardedTerm($term as xs:string) as xs:string*{
(fn:concat($search-term, "*"),fn:concat("* ",$search-term))
};
let $terms := getWildCardedTerm($search-term)
let $values := cts:search(//searchLabel,cts:and-query((cts:collection-query(("/collections/autosuggest")), cts:element-word-query(xs:QName("suggestion"),$terms))))
let $suggestionsOrderedByLength := for $value in $values
order by fn:string-length($value//altLabel/text()), $value/altLabel/text()
return $value
return <suggestions>{$suggestionsOrderedByLength[1 to 10]}</suggestions>
Есть ли способ сортировки во время поиска ??
Но результаты, которые я хочу, должны сортироваться по длине в порядке возрастания, как я могу достичь этого с помощью cts: value-match? – Atiq
Как и сейчас, используя инструкцию FLWOR вокруг 'cts: value-match'. Таким образом, вы по существу только заменяете 'cts: search' на' cts: value-match' .. – grtjn