Search 用符号AND进行标记逻辑搜索

Search 用符号AND进行标记逻辑搜索,search,marklogic,ampersand,Search,Marklogic,Ampersand,假设我正在使用一个cts:queryAPI进行搜索。我正在寻找包含短语“John and Jane”的文档。我的一些文件中有“约翰和简”(实际上是约翰和简)。我希望他们也能被归还。也考虑反向情况。 Marklogic是否提供了执行此操作的选项?以cts表示的查询:使用XQuerytypeswitch表达式很容易重写查询项或XML。位于的讨论列表线程中有一个类似的示例。Mike给出了一个很好的建议,但可能值得退一步,先看看您的问题。从你对Mike答案的评论来看,我认为你在寻找类似同义词库扩展的东西

假设我正在使用一个
cts:query
API进行搜索。我正在寻找包含短语“John and Jane”的文档。我的一些文件中有“约翰和简”(实际上是约翰和简)。我希望他们也能被归还。也考虑反向情况。


Marklogic是否提供了执行此操作的选项?

以cts表示的查询:使用XQuery
typeswitch
表达式很容易重写查询项或XML。位于的讨论列表线程中有一个类似的示例。

Mike给出了一个很好的建议,但可能值得退一步,先看看您的问题。从你对Mike答案的评论来看,我认为你在寻找类似同义词库扩展的东西,但要寻找“and”和“and”而不是其他单词

我可能错了,但据我所知,MarkLogic并没有提供自动处理类似问题的功能。像
search:search
search:parse
这样的函数功能非常强大,但没有那么强大。您可以自己选择一个类似您的搜索字符串,手动将其拆分为多个部分以将其封装在cts:query中,或者使用类似于
search:parse
的方法来完成此操作,然后使用Mike的技巧遍历您的查询树,并以特定方式扩展任何特定的搜索查询节点

Mike指向的markmail线程给出了一个如何遍历查询树并对其进行操作的示例。对于这个特殊的案例来说有点沉重,但是有一个同义词表模块可以在各种一般情况下提供帮助。《搜索开发指南》的下一章介绍了它的功能,并以一个小示例结束,说明如何应用它:


假设您要搜索的术语是
“John&Jane”

为了搜索上面的单词,您可以使用下面的行

let$inputSearchDetails=“John&Jane”


让$InputXML:=xdmp:unquote($inputSearchDetails,”,(“format xml”,“repair full”)

我认为,如果我的查询字符串是(比如在cts:element word查询中)“John&Jane and Joseph&Jordan等…”,并且我的文档包含“约翰、简、约瑟夫、乔丹……等等。。“或同一短语中带有不同组合的&”和“and”。也许这对我来说很愚蠢,但我希望能有一种类似于阻止搜索的机制来解决这个问题。我的意思是,像“running”一样,解析为“run”,反之亦然,&“running”会解析为“and”,反之亦然。你是对的,在这种情况下,你可以看到组合爆炸。不过,我认为它们会非常罕见。您的扩展代码可以检查大小限制,并在达到限制时警告用户。谢谢您的建议谢谢。我必须看看我能在这个基础上做些什么。