【问题标题】:Creation of search using JAVA API from Marklogic使用 Marklogic 的 JAVA API 创建搜索
【发布时间】:2016-09-15 08:36:55
【问题描述】:

在这里,我正在创建一个连接到 Marklogic 数据库并使用字符串关键字检索文档的 java 程序。下面是创建的程序。

import com.marklogic.client.DatabaseClient;
import com.marklogic.client.DatabaseClientFactory;
import com.marklogic.client.DatabaseClientFactory.Authentication;
import com.marklogic.client.document.BinaryDocumentManager;
import com.marklogic.client.document.JSONDocumentManager;
import com.marklogic.client.document.TextDocumentManager;
import com.marklogic.client.document.XMLDocumentManager;
import com.marklogic.client.io.Format;
import com.marklogic.client.io.StringHandle;
import com.marklogic.client.query.QueryManager;
import com.marklogic.client.query.StringQueryDefinition;

public class dcb_conn {
  public static void main(String args[]){
    DatabaseClient client = DatabaseClientFactory.newClient("localhost", 8004, "venkatesh", "F1mas", Authentication.DIGEST);
    BinaryDocumentManager binDocMgr = client.newBinaryDocumentManager();
    XMLDocumentManager XMLdocMgr = client.newXMLDocumentManager();
    JSONDocumentManager JSONDocMgr = client.newJSONDocumentManager();
    TextDocumentManager TextDocMgr = client.newTextDocumentManager();
    QueryManager queryMgr = client.newQueryManager();
    StringQueryDefinition query = queryMgr.newStringDefinition();
    StringHandle resultsHandle = new StringHandle().withFormat(Format.XML);
    query.setCriteria("Venkatesh");
    queryMgr.search(query, resultsHandle);
  }
}

我没有得到任何文档结果(例如 ABC.xml),而是得到了下面提到的结果。你能告诉我这里缺少什么吗?

10:24:36.139 [main] DEBUG c.m.client.DatabaseClientFactory - Creating new   database client for server at localhost:8004
10:24:36.155 [main] DEBUG c.m.client.impl.JerseyServices - Connecting to localhost at 8004 as venkatesh
10:24:36.319 [main] DEBUG c.m.client.impl.JerseyServices - Searching for Venkatesh

【问题讨论】:

    标签: marklogic java


    【解决方案1】:

    在这种情况下,首先确保您能够与您用于搜索的用户一起阅读相关文档。例如,我通常使用 cURL 对文档获取 REST API 进行这种完整性检查

    如果您能够获取文档,则搜索失败,这也可能是由于语言设置。

    因此,简短的建议是 - 移除尽可能多的移动部件,并与用户直接针对 ML 进行测试(查询控制台和/或 REST 等)

    【讨论】:

    • 另请注意,您的搜索有一个大写字母,这意味着默认情况下它将区分大小写(请参阅Usage Notes on cts:word-query。确保您的数据具有大小写匹配的文本或使用小写-案例查询。
    • 谢谢大卫。我已经修改了我的程序,如下所述,它现在正在显示结果。 DatabaseClient 客户端 = DatabaseClientFactory.newClient("localhost", 8004, "admin", "admin",Authentication.DIGEST); QueryManager queryMgr = client.newQueryManager(); StringQueryDefinition 查询 = queryMgr.newStringDefinition(); SearchHandle 结果Handle = new SearchHandle(); query.setCriteria("Venkatesh"); // 运行搜索 queryMgr.search(query, resultsHandle); // 格式化结果 TutorialUtil.displayResultURIs(resultsHandle);客户端.release(); } }
    • 我还有一个问题,如果使用 JAVA API 构建 GUI,如何使用文档名称搜索文档。请指教。
    • 你真的应该把这个作为一个单独的问题来问。其他人不会从嵌入在您原始答案中的答案中受益。尽管如此,如果您想搜索特定文档(或可以同时包含字符串查询和结构化查询的组合查询),您应该查看结构化查询。你想要 StructuredQueryBuilder.document。您可以在此处找到更多信息:docs.marklogic.com/guide/java/searches#id_70572docs.marklogic.com/guide/java/searches#id_76144
    • 请听取 Kim 的建议并参考她提供的文件。如果这还不够,那么将其作为一个新问题提出 - 它使 Stack Overflow 保持整洁。但是,应该注意的是,您的问题(如果以书面形式发布)可能会被认为过于模糊,因此除了此线程中已经列出的文档之外,几乎没有人可以指导您。
    猜你喜欢
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 2018-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多