Marklogic搜索不同的值

时间:2014-12-16 07:56:29

标签: search marklogic

我正在研究MarkLogic中的搜索,我的要求是在搜索时带来结果" NAVIN RAWAT"是:

   o   Search should return for N Rawat

   o   Navin Rawat

   o   Navin R

   o   Navin Raw

   o   Navin Rawat

我打算使用搜索:搜索来获取这些结果。但是,我没有得到如何获得这些结果,因为它们彼此不同。在使用MarkLogic搜索时,任何机构都可以帮助或建议我如何获得这些结果:search或cts:search。

1 个答案:

答案 0 :(得分:3)

我认为对于这样的要求,您需要编写一些搜索扩展代码。您可以为Search API构建custom constraint来执行此操作。作为字符串查询,您可以执行类似

的操作
expand:"Navin Rawat"

结构化查询看起来会有所不同,但会传达相同的信息。下一步是进行实际扩展。目前还不清楚你有什么规则 - 对于姓氏,是任何数量的起始字母,还是有一个原因你没有包括" Navin Ra" ?我假设你想要任意数量的信件。

您可以构建一个看起来像这样的函数来为姓氏提供选项:

declare function local:choices($first, $last)
{
  for $i in (1 to fn:string-length($last))
  return
    fn:substring($last, 1, $i) ! ($first || " " || .)
};

local:choices("Navin", "Rawat")

=>

  • Navin R
  • Navin Ra
  • Navin Raw
  • Navin Rawa
  • Navin Rawat

完成后,您的解析函数可以返回带有该字符串序列的cts:word-query()。为你的" N Rawat"投入一些东西。案件,你已经设定好了。