向 slush marklogic 示例添加一个方面

adding a facet to the slush marklogic example

我花了一个下午的大部分时间来尝试向基于 marklogic slush template 的示例应用程序添加一个方面。

它有一个基于元素范围索引的 eyeColor 方面。

可以找到样本数据here

我的目标是在性别上添加一个方面,这也是示例 json 数据中的一个元素。所以我在 localname 性别上添加了一个元素范围索引。相同的整理端点。

然后我重新索引

现在我尝试了解在应用程序中出现构面之前是否需要对前端应用程序进行其他更改。

我尝试从后端了解如何使用控制台上的示例 xquery 查看我的搜索调用中可用的方面(或约束)。似乎我找不到正确的 search:search 函数来从控制台检索构面信息,甚至连 eyeColor 上现有的也找不到。

如果我知道我想要什么,我可以在选项参数中传递一个约束,但似乎前端不知道搜索的具体方面-api returns 或我错了?

在我试过的控制台上:

xquery version "1.0-ml";
import module namespace search = "http://marklogic.com/appservices/search"
    at "/MarkLogic/appservices/search/search.xqy";

search:search(" ",
    <options xmlns="http://marklogic.com/appservices/search">
      <return-results>true</return-results>
      <return-facets>true</return-facets>
      <constraint name="eyeColor">
    <range collation="http://marklogic.com/collation/codepoint/" type="xs:string">
    </range>
  </constraint>
    </options>)

但这不包含分面结果...

是的,我在 SO 阅读了大部分关于 ML 方面的现有问题,但仍然没有运气......

任何人都可以让我走上正轨吗?

雨果

好的我明白了... 您必须将选项添加到文件夹 app-root/rest-api/config/options/all.xml

中的其余 api 选项

添加一个选项(性别)如

  <search:constraint name="gender">
    <search:range type="xs:string" facet="true" collation="http://marklogic.com/collation/codepoint">
      <search:facet-option>limit=5</search:facet-option>
      <search:facet-option>frequency-order</search:facet-option>
      <search:facet-option>descending</search:facet-option>
      <search:json-property>gender</search:json-property>
    </search:range>
  </search:constraint>

再次使用 roxy 部署,因为您还需要一个范围索引...