0

如何使用 java API 从 MarkLogic 获取 Facets 信息?我试图通过参考一些文档来弄清楚我们的问题,但无法获得解决方案。请帮助寻找解决方案。

我在名为“integerQuery”的 json 属性上创建了一个元素范围索引 元素范围索引

现在尝试从代码中获取多面值和名称。

  DatabaseClient client=DatabaseClientFactory.newClient("10.53.195.198",6010,"nosql",new 
     DigestAuthContext("admin","admin"));   

    QueryManager queryManager=client.newQueryManager();

    StructuredQueryBuilder queryBuilder=queryManager.newStructuredQueryBuilder();

 queryBuilder.jsonProperty("integerQuery");
 StructuredQueryDefinition def=queryBuilder.or();
   SearchHandle handle= queryManager.search(def,new SearchHandle());
 System.out.println(handle.getFacetResult("integerQuery"));  //Prints NULL

尝试使用查询选项,QueryOptionsBuilder但在更新的 MarkLogic java 版本中删除了该类。

任何人都可以建议从元素范围索引中详细描述多面值的答案吗?

我试图从他们提供的介绍课程中学习,但它仍然使用 QueryOptionsBuilder 类。

我在数据库中的 json 文档。

{
  "Name": "Flipkart", 
  "integerQuery": 7
}
4

1 回答 1

3

您需要自己为构面定义选项。然后,将StructuredQueryDefinition构建的StructuredQueryBuilder与构面选项一起使用并将其传递给RawCombinedQueryDefinition. 一个示例是:

// Build the StructuredQueryDefinition 
// from StructuredQueryBuilder
StructuredQueryDefinition builtSQ = queryBuilder.term("one");
String XML_OPTIONS = 
     "<options xmlns=\"http://marklogic.com/appservices/search\">" +
        " <constraint name=\"artist\"> " +
        " <range type = \"xs:string\" " +
               " collation = \"http://marklogic.com/collation/en/S1/AS/T00BB\"> " + 
        " <element ns = \"http://marklogic.com/MLU/top-songs\" name=\"artist\"/>" + 
        " <facet-option>descending</facet=option> " +
        " <facet-option>limit=30</facet=option> " +
     "</options>";
// Create a QueryManager
QueryManager qm = client.newQueryManager();
StructuredWriteHandle queryHandle = new StringHandle().with(
        "<search xmlns=\"http://marklogic.com/appservices/search\">" +
            builtSQ.serialize() + 
            XML_OPTIONS +
        "</search>").withFormat(Format.XML)
RawCombinedQueryDefinition query = qm.newRawCombinedQueryDefinition(queryHandle);
// Perform the search
SearchHandle results = qm.search(query, new SearchHandle());

以上 XML_OPTIONS 用于基于元素“艺术家”的范围索引构建构面。有关如何构建构面选项的更多信息,请访问以下链接。

生成搜索方面

受限搜索和分面导航

约束选项

方面选项

有关组合查询的信息,请参阅此链接

希望这可以帮助!

于 2018-05-23T23:40:09.737 回答