如何在短语上使用MarkLogic词库API?

时间:2013-08-05 08:55:47

标签: marklogic thesaurus

在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"),
    (), 
    (), 
    () )
)

问题是如何支持以下案例:

  • Apple AND Orange
  • Apple NOT Orange
  • Apple - Orange
  • Apple + Orange
  • 形式:10-K
  • co:Apple
  • Apple Orange形式:[10-K]
  • “Apple and Orange”
  • “Apple”Orange

2 个答案:

答案 0 :(得分:1)

我不认为词库扩展是针对这些情况的。

相反,请考虑使用Search API并扩展语法以在布尔运算符中包含变体:

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

要将form:和co:映射到同一索引,请再次考虑使用Search API并为同一索引定义多个约束:

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

答案 1 :(得分:1)

使用search:parse解析查询字符串,产生cts:query XML。然后使用递归typeswitch函数来遍历XML。在cts:wordcts:word条款上使用词库扩展。