我是MarkLogic的新手。 是否可以以这样的方式创建搜索应用程序:当用户进行搜索时,他/她会收到文档的URI链接以及一些摘要?当他们单击URI链接时,他们会看到完整的文档。我也想给出收集方面,这将进一步过滤记录。我想将某些字段用作构面,这些字段存在于某些集合的文档中,但不存在于其他集合中。但是,这些集合确实有一个公共的唯一字段,可用于进行联接或链接。我想知道,这怎么可能?我们如何使收款方面?我们如何加入不同的收藏?我们如何使URI链接可点击并将用户定向到完整文档?我想回答一些问题,例如向我显示所有带有“家务”字样的维护文件,然后单击位置名称(位置信息可能在不同的集合中)以进一步缩小搜索范围,或者单击从事这些“家政”工作的员工的姓名,以进一步缩小搜索范围。我将衷心感谢您的帮助。我构建了一个搜索应用程序,就像MarkLogic教程中的Top-Songs一样,但是对于所有文档来说,它只有一个集合和相同的XML模式,但是现在不同的集合和不同的XML模式让我感到困惑。还请告诉我是否应该使用Search API或cts:search来实现这一目标。通过将这些集合分开放置是否可以实现?还是需要对它们进行规范化处理?
非常感谢您的帮助。 非常感谢
答案 0 :(得分:1)
我建议您看看slush-marklogic-node。它是一个生成器,可通过功能齐全的搜索应用程序为您创建一个完整的项目。它带有一些JSON样本数据,并且具有一些适用的示例方面,但是您也可以上传其他数据,并进行处理(前提是您将其放入“数据”集合中)。
不幸的是,它在稍微过时的堆栈上运行,但是它相当稳定,并且可能为您提供有关如何处理某些方面的好主意。正确部署后,它应如下所示:
http://slush-default.demo.marklogic.com/
更新:
关于集合方面,生成的应用附带了几个示例方面,其中第一个基于集合。它是由REST端点/v1/search
的构面功能驱动的,而REST端点search:search()
则建立在constraints之上。该函数采用可以定义https://github.com/marklogic-community/slush-marklogic-node/blob/master/app/templates/rest-api/config/options/all.xml#L105的所谓搜索选项。这里有两个例子:
<!-- 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>
另请参阅:{{3}}
HTH!