使用Marklogic中的JAVA API创建搜索

使用Marklogic中的JAVA API创建搜索,marklogic,java,Marklogic,Java,这里我创建了一个java程序,它连接到Marklogic数据库,并使用string关键字检索文档。下面是创建的程序 import com.marklogic.client.DatabaseClient; import com.marklogic.client.DatabaseClientFactory; import com.marklogic.client.DatabaseClientFactory.Authentication; import com.marklogic.client.doc

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

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

在这种情况下,首先确保您能够与用于搜索的用户一起阅读相关文档。例如,我通常使用cURL对文档getrestapi执行这种健全性检查

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


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

在这种情况下,首先确保您能够与用于搜索的用户一起阅读有问题的文档。例如,我通常使用cURL对文档getrestapi执行这种健全性检查

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


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

还要注意,您的搜索有一个大写字母,这意味着默认情况下它将区分大小写运行(请参阅。请确保您的数据具有大小写匹配的文本或使用小写查询。谢谢David。我已按以下所述修改了我的程序,现在正在显示结果。DatabaseClient client=DatabaseClientFactory.newClient(“localhost”,8004,“admin”,“admin”,Authentication.DIGEST);QueryManager queryMgr=client.newQueryManager();StringQueryDefinition query=queryMgr.newStringDefinition();SearchHandle resultsHandle=new SearchHandle();query.setCriteria(“Venkatesh”);//运行搜索queryMgr.search(query,resultsHandle);//格式化结果教程直到.displayResultURIs(resultsHandle);client.release()}另外,我还有一个问题,在使用JAVA API构建GUI时,如何使用文档名称搜索文档。请给出建议。您应该将此作为单独的问题来提问。其他人将不会从嵌入原始文档的答案中受益。尽管如此,如果您想搜索特定文档,您应该查看结构化查询uments(或可以同时保存字符串查询和结构化查询的组合查询)。您需要StructuredQueryBuilder.document。您可以在此处找到更多信息:,和。请采纳Kim的建议并参考她提供的文档。如果这还不够,请将此作为新问题提出-它可以保持堆栈溢出的整洁。但是,应该注意的是,您的问题(如果以书面形式发布)也可能会被考虑含糊不清,因此除了此线程中已列出的文档之外,几乎没有人可以指导您。还要注意,您的搜索有一个大写字母,这意味着默认情况下它将区分大小写运行(请参阅。请确保您的数据具有大小写匹配的文本或使用小写查询。谢谢David。我已按以下所述修改了我的程序,现在正在显示结果。DatabaseClient client=DatabaseClientFactory.newClient(“localhost”,8004,“admin”,“admin”,Authentication.DIGEST);QueryManager queryMgr=client.newQueryManager();StringQueryDefinition query=queryMgr.newStringDefinition();SearchHandle resultsHandle=new SearchHandle();query.setCriteria(“Venkatesh”);//运行搜索queryMgr.search(query,resultsHandle);//格式化结果教程直到.displayResultURIs(resultsHandle);client.release()}另外,我还有一个问题,在使用JAVA API构建GUI时,如何使用文档名称搜索文档。请给出建议。您应该将此作为单独的问题来提问。其他人将不会从嵌入原始文档的答案中受益。尽管如此,如果您想搜索特定文档,您应该查看结构化查询uments(或可以同时保存字符串查询和结构化查询的组合查询)。您需要StructuredQueryBuilder.document。您可以在此处找到更多信息:,和。请采纳Kim的建议并参考她提供的文档。如果这还不够,请将此作为新问题提出-它可以保持堆栈溢出的整洁。但是,应该注意的是,您的问题(如果以书面形式发布)也可能会被考虑含糊不清,因此除了本帖中已经列出的文档之外,没有什么人可以指导您。