Как включить подэлемент как часть запроса слова в MarkLogic - PullRequest
1 голос
/ 19 июня 2019

У нас есть данные в формате XML следующим образом

<person>
    <snm>Joisar</snm>
    <fnm>Manish</fnm>
    <init>Mr.</init>
</person>

Слово запрос выглядит следующим образом

<options>
    <word>
        <element ns="" name="{$constants:surname}"/>
        <element ns="" name="{$constants:foreName}"/>
        <element ns="" name="{$constants:initial}"/>
        <element ns="" name="{$constants:prefix}"/>
        <element ns="" name="{$constants:suffix}"/>
        <term-option>case-insensitive</term-option>
        <term-option>diacritic-insensitive</term-option>
        <term-option>punctuation-insensitive</term-option>
        <term-option>whitespace-insensitive</term-option>
    </word>
</options>

Когда мы ищем имя или фамилию, все работает нормально, и мы получаем результаты

search:search($SearchWord, $SearchOption, $Start, $pageLength)

Теперь, когда пользователь хочет найти полное имя, то есть "Joisar Manish", он не показывает результаты, так как оба находятся в отдельных элементах. По крайней мере, один путь должен искать, то есть Джойсар Маниш ИЛИ Маниш Джойсар

Не могли бы вы помочь мне с тем, как написать запрос слова, чтобы убедиться, что он работает как положено? или нам нужно пойти с другим подходом?

1 Ответ

3 голосов
/ 20 июня 2019

Здесь есть два основных подхода:

  1. Должен искать каждую часть имени отдельно и AND их вместе, логически Joisar AND Manish.
  2. То, как вы думаете об этом, как поиск фразы. Здесь, однако, вам необходимо выполнить некоторую реконфигурацию базы данных, потому что по умолчанию фразы разбиваются на границах элементов. Итак, вы хотите объявить эти элементы низкого уровня как phrase-through элементы. Затем вы выполняете поиск по элементу person. Это предполагает, что части на самом деле смежные.
...