Поиск по фразе и выделение с помощью search:search в Marklogic

Я хочу найти фразу с помощью поиска: найдите и выделите эту фразу (не отдельные слова). Например, если я ищу search:search("аренда кораллов"), то приходит следующий вывод: -

<search:match path="fn:doc("abc.xml")/*:text>testing <search:highlight>Lease</search:highlight><search:highlight>CORAL</search:highlight></search:match>

Отдельно выделяют аренду и кораллы. Но я хочу выделить «Аренду коралла» вместе, как одну фразу. Есть ли способ получить этот результат.


person Puneet Pant    schedule 18.10.2012    source источник


Ответы (1)


Ответ находится по адресу http://docs.marklogic.com/guide/search-dev/search-api#id_44520

«любая фраза» Все, что заключено в двойные кавычки, рассматривается как фраза. Пример соответствует документам, содержащим фразу «любая фраза» (без двойных кавычек).

Вы можете поэкспериментировать с этим, используя search:parse:

import module namespace search = "http://marklogic.com/appservices/search"
  at "/MarkLogic/appservices/search/search.xqy";

search:parse('high time')
=>
<cts:and-query strength="20" qtextjoin="" qtextgroup="( )" xmlns:cts="http://marklogic.com/cts">
  <cts:word-query qtextref="cts:text">
    <cts:text>high</cts:text>
  </cts:word-query>
  <cts:word-query qtextref="cts:text">
    <cts:text>time</cts:text>
  </cts:word-query>
</cts:and-query>

Это оператор И двух терминов словесного запроса. Теперь попробуйте следующее:

import module namespace search = "http://marklogic.com/appservices/search"
  at "/MarkLogic/appservices/search/search.xqy";

search:parse('"high time"')
=>
<cts:word-query qtextpre="&quot;" qtextref="cts:text" qtextpost="&quot;" xmlns:cts="http://marklogic.com/cts">
  <cts:text>high time</cts:text>
</cts:word-query>

Это простой термин словесного запроса, но текст — это фраза, а это то, что вам нужно. Обратите внимание на вложенные кавычки.

person mblakele    schedule 18.10.2012