MarkLogic - PullRequest
       7

MarkLogic

0 голосов
/ 17 декабря 2018

У меня установлен язык базы данных на en и stemmed searches на Basic, word searches отключен.

Для документа, подобного следующему, я ожидал, что запросы будут работать только для первого / самого короткогоствол должен быть найден (как описано здесь ).Стебель для further возвращает 3 стебля: дальше, дальше и дальше.Я проверил это с помощью

cts:stem("further")

Так как базовые поисковые запросы должны индексировать только самый короткий ствол, я ожидал, что поиск с помощью farther не найдет мой документ.Но это не тот случай.

xquery version "1.0-ml";

let $doc := 
<doc>
  <title>further</title>
</doc>

return xdmp:document-insert('test.xml', $doc);

cts:search(doc(), cts:word-query("farther")); // finds my document

cts:stem("further")

Есть ли что-то, что я неправильно понимаю?Почему поиск по farther находит документ с further, даже если это не самый короткий / первый ствол?

Кроме того, поиск по третьему стволу находит мой документ, даже если с "незаполненным"опция (word searches включена в этом случае).

cts:search(doc(), cts:word-query("further", ("unstemmed")));

Использование MarkLogic 9.0-7.2.

1 Ответ

0 голосов
/ 17 декабря 2018

Универсальный индекс в MarkLogic состоит из нескольких частей.Существует один для поиска по стволу, а другой - для поиска без подстановки / с подстановочными символами.Стволовая часть индекса содержит стебли, но у нештемной части есть незапятнанные жетоны.Вот почему при поиске по фактическому значению при поиске без поиска найдется совпадение.

О поиске по основам: как вы можете прочитать в документации по cts:stem, эта функция возвращает все основы независимо от того,настройка базы данных.Однако порядок, в котором он их возвращает, важен.cts:stem("further") возвращает far, further, farther, cts:stem("farther") возвращает far, farther, further, а cts:stem("far") возвращает far.

Из того, что я понял, базовый ствол берет первый элемент, возвращаемый cts: stem, ииспользует это для индексации.Как вы можете прочитать выше, это означает, что он использует far для further, farther, а также для far.Усовершенствованная система определения стеблей позволит вам найти further при выполнении поиска по стволу для farther и наоборот.

Более подробная информация доступна в руководстве по поиску в разделе: 'Стемминг в MarkLogic'

HTH!

...