【问题标题】:MarkLogic: only return exact search resultsMarkLogic:只返回准确的搜索结果
【发布时间】:2017-10-23 09:20:36
【问题描述】:

我正在使用 MarkLogic Java API。我希望搜索某个字符串以仅返回该字符串与文档中的某个键完全匹配的文档。我明确地只想搜索字符串,我不想指定这个字符串必须提前匹配的键。

示例 1:

    DatabaseClient client = DatabaseClientFactory.newClient(Config.host, Config.port, new DigestAuthContext(Config.user, Config.password));
    QueryManager queryMgr = client.newQueryManager();
    queryMgr.setPageLength(100);

    // create a search definition
    StringQueryDefinition query = queryMgr.newStringDefinition();

    // Search for the term
    query.setCriteria("2017");

    SearchHandle resultsHandle = new SearchHandle();

    // run the search
    queryMgr.search(query, resultsHandle);

本例中搜索“2017”也会返回以下形式的文档:

{"Example1":{"key1":"bla", "key2":"2017-10-12T15:37:53.204Z"}}

它应该只返回这样的文件:

{"Example1":{"key1":"bla", "key2":"2017"}}

我还尝试了以下方法。例 2:

    DatabaseClient client = DatabaseClientFactory.newClient(Config.host, Config.port, new DigestAuthContext(Config.user, Config.password));
    QueryManager queryMgr = client.newQueryManager();
    queryMgr.setPageLength(100);

    // create a search definition
    StructuredQueryBuilder qb = new StructuredQueryBuilder();
    StructuredQueryDefinition query = qb.term( "2017");

    SearchHandle resultsHandle = new SearchHandle();

    // run the search
    queryMgr.search(query, resultsHandle);

我尝试用\"\" 封装上面两个示例中的搜索词,例如"\"2017\""。那里也没有运气。

【问题讨论】:

    标签: java marklogic


    【解决方案1】:

    我不知道有什么方法不需要您指定该字符串必须匹配的键。我认为您最接近的方法是创建一个封装可能元素名称列表的字段。枚举它们应该不是不可能的,即使您必须自动创建字段并在摄取新内容(和新元素名称)时对其进行更新。然后你可以这样做:

    StructuredQueryBuilder sqb = new StructuredQueryBuilder();
    QueryDefinition query = sqb.value(sqb.field("catchall"), "mark");
    SearchHandle results = queryMgr.search(query, new SearchHandle());
    

    另请注意,此问题与MarkLogic Java: Set Query Type to Value in StringQueryDefinition 重复

    【讨论】:

    • 好的,谢谢您的回答。然后我知道这是不可能的,我必须找到解决方法。
    猜你喜欢
    • 2019-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-16
    • 2016-01-07
    • 2021-04-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多