Как использовать тезаурус 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
термины.