JSON元素中的MarkLogic 8搜索不区分大小写 - XQuery

时间:2017-10-23 13:14:28

标签: xquery marklogic marklogic-8

显示记录

{"myLabel":"AFRICANA"}
{"myLabel":"africans"}
{"myLabel":"AFRICAN"}
{"myLabel":"Africa"}

查询:`cts:json-property-word-match(" myLabel"," Africa *")`
结果:     {" myLabel":"非洲"}
查询仅返回匹配案例数据而不是所有相关行。

查询:`cts:json-property-word-match(" myLabel"," Africa *"," case-insensitive")`
结果:     您的查询返回一个空序列
如果我使用"不区分大小写"选项它返回空序列。

我将单词词汇设为myLabel。 如何不敏感地搜索JSON数据?

1 个答案:

答案 0 :(得分:1)

提供的两个示例都为我返回了预期的结果。您是否打算将第二个查询显示为cts:json-property-value-query()的搜索?

如果是这种情况,那么应用wildcarded选项将确保值不区分大小写并且作为通配符查询:

cts:search(doc(), 
  cts:json-property-value-query("myLabel", "Africa*", ("wildcarded","case-insensitive")))

仔细检查是否启用了“尾随通配符搜索”,或者是否为您的内容数据库启用了三个,两个或一个字符搜索。 rules for wildcard searches表示您需要为查询启用特定数据库索引以自动将带有通配符模式的查询应用为通配符查询:

  

如果既没有“wildcarded”也没有“unwildcarded”,则数据库配置和$ text确定通配符。如果数据库启用了任何通配符索引(“三个字符搜索”,“一个字符搜索”,“一个字符搜索”或“尾随通配符搜索”),并且$ text包含任何一个通配符'?'或'*',它指定“通配符”。否则它指定“unwildcarded”。

启用其中任何一个索引设置后,带有*的查询字词应自动作为通配符查询执行,您可以删除显式wildcarded选项:

cts:search(doc(), 
  cts:json-property-value-query("myLabel", "Africa*", "case-insensitive"))
相关问题