Как использовать тезаурус API MarkLogic для фраз?

В Marklogic мы можем расширить поиск, включив в него термины из тезауруса, а также термины, введенные в поиске.

xquery version "1.0-ml";
import module namespace thsr="http://marklogic.com/xdmp/thesaurus" at "/MarkLogic/thesaurus.xqy";

cts:search(
doc("/Docs/hamlet.xml")//LINE,
thsr:expand(
    cts:word-query("weary"), 
    thsr:lookup("/myThsrDocs/thesaurus.xml", "weary"),
    (), 
    (), 
    () )
)

Вопрос в том, как поддержать следующие случаи:

  • Яблоко и апельсин
  • Яблоко НЕ Оранжевый
  • Яблоко - апельсин
  • Яблоко + апельсин
  • Форма: 10-К
  • со: Apple
  • Яблочно-апельсиновая форма:[10-K]
  • "Яблоко и Апельсин"
  • "Яблоко" Апельсин

2 ответа

Я не думаю, что расширение тезауруса предназначено для этих случаев.

Вместо этого рассмотрите возможность использования API поиска и расширения грамматики для включения вариантов в логические операторы:

http://docs.marklogic.com/guide/search-dev/search-api#id_44520

Чтобы снова отобразить форму: и co: на один и тот же индекс, рассмотрите возможность использования API поиска и определения нескольких ограничений для одного и того же индекса:

http://docs.marklogic.com/guide/search-dev/search-api#id_95820

Использование search:parse для анализа строки запроса, получая cts:query XML. Тогда используйте рекурсивный typeswitch Функция для прогулок по XML. Используйте расширение тезауруса на cts:word а также cts:word термины.

Другие вопросы по тегам