【发布时间】:2017-10-15 09:52:37
【问题描述】:
我正在使用 MarkLogic Java API。我正在寻找一种方法来设置 StringQueryDefinition 的查询类型。类型应为“值”,如:https://docs.marklogic.com/guide/search-dev/searchdev#id_34905 中所述。
值:匹配特定 JSON 属性或 XML 元素中的整个文字值,例如字符串或数字。默认情况下,值查询使用完全匹配语义。例如,搜索“mark”将不会匹配“Mark Twain”。
我需要这个,因为我希望我的文本搜索只匹配确切的搜索词。
示例:对“mark”的搜索应仅与包含与某个键相关的“mark”一词的文档相匹配。所以,{"anExample1": {"key1": "mark", "key2":"someotheralue"}} 是一个有效的匹配。但{"anExample2": {"key1": "mark twain", "key2":"someotheralue"}} 不是有效匹配项。
对于这两个示例,我想获取返回的文档中的 URI 和位置。因此,搜索"mark" 应该返回uri/anExample1 和anExample1/key1。
【问题讨论】:
-
你有什么尝试吗?我不清楚在什么情况下您可以搜索“一二三”并使其与您的第二个示例文档相匹配。
-
你是对的。我的例子很糟糕,对此感到抱歉。已编辑。
-
请务必查看 StructuredQueryBuilder 和 SearchHandle。这些可能会成为您答案的一部分。您是否阅读过 Java 搜索指南? docs.marklogic.com/guide/java/searches
-
我做到了。不幸的是没有运气。我不想预先指定搜索值应该匹配的键。作为搜索的返回,我只想要包含附加到文档中某个键的确切值的文档。
-
如果我预先指定密钥,命令会是什么?所以在这个例子中,我会搜索“key1”==“mark”。不是很优雅,但我们可以为所有文档的所有值附加一个额外的键(即“extrakey”),然后搜索“extrakey”==“searcedValue”。
标签: marklogic