如何在MarkLogic中制作动态搜索应用程序?

问题描述 投票:0回答:1

我是MarkLogic的新手。是否有可能以这样的方式创建搜索应用程序:当用户进行搜索时,他/她会收到文档的URI链接以及一些摘要?当他们点击URI链接时,他们可以看到完整的文档。我还想给出收集方面,这将进一步过滤记录。我想将一些字段用作构面,这些字段存在于某些集合的文档中,但不存在于其他集合中。但是,这些集合确实有一个共同的唯一字段,可用于连接或链接它们。我想知道,怎么可能?我们如何制作收藏方面?我们如何在不同的集合上进行连接?我们如何使URI链接可点击并将用户引导至完整文档?我想回答一些问题,比如告诉我所有维护文件中都有“管家”字样,然后我点击位置名称(位置信息可能在不同的集合中)以进一步缩小搜索范围,或者我可以点击从事这些“家务”工作的员工姓名,以进一步缩小搜索范围。我将衷心感谢您的帮助。我建立了一个搜索应用程序,就像MarkLogic教程中的Top-Songs一样,但它只有一个集合和所有文档的相同XML模式,但现在不同的集合和不同的XML模式让我感到困惑。还请告诉我是否应该使用Search API或cts:search来实现这一点。这可以通过将这些集合分开来实现,还是需要对它们进行非规范化?

我将衷心感谢您的帮助。很多问候

javascript xquery marklogic marklogic-9
1个回答
1
投票

我建议看看slush-marklogic-node。它是一个生成器,可以为您创建一个包含功能齐全的搜索应用程序的完整项目。它附带了一些JSON样本数据,并且有一些可以使用它的示例方面,但是如果将它放在“数据”集合中,您还可以上传其他数据并使用它。

不幸的是,它运行在一个稍微过时的堆栈上,但它相当稳定,并且可能会为您提供有关如何处理某些方面的好主意。正确部署后,它应如下所示:

http://slush-default.demo.marklogic.com/

更新:

关于集合的方面,生成的应用程序带有几个示例方面,其中第一个基于集合。它受REST端点/v1/search的分面功能驱动,后者又建立在search:search()之上。该函数采用可以定义constraints的所谓搜索选项。这里有两个例子:

  <!-- Facet based on document collections, simple yet elegant -->
  <constraint name="Collection">
    <collection facet="true" />
    <!-- optionally enable a prefix to see a specific subset of facets
    <collection facet="true" prefix="data/" />
    -->
  </constraint>

  <!-- Example range facet based on the sample-data -->
  <constraint name="eyeColor">
    <range type="xs:string" facet="true" collation="http://marklogic.com/collation/codepoint">
      <facet-option>limit=5</facet-option>
      <facet-option>frequency-order</facet-option>
      <facet-option>descending</facet-option>
      <path-index>eyeColor</path-index>
    </range>
  </constraint>

另见:https://github.com/marklogic-community/slush-marklogic-node/blob/master/app/templates/rest-api/config/options/all.xml#L105

HTH!

© www.soinside.com 2019 - 2024. All rights reserved.