0

我正在使用 Endeca 体验管理器。我需要在 Endeca 查询中过滤维度的结果。

我需要在 Endeca 查询中应用两个 OR 操作来获取维度。

给出一个示例查询以了解我的要求。

http://www.example.com/endeca_jspref/controller.jsp?sid=1463DDBF22F0&enePort=16000&eneHost=hostname&N=0&Ntk=brand.name|product.color&Ntt=canon+kodak|red+blue&Ntx=mode+matchany

对维度brand.name 和red, blue 对维度product.color 的canon 和kodak 搜索。我的要求是应用与四个条件中的任何一个匹配的 OR 条件并给出结果。

我需要 OR 条件查询。

请建议!

谢谢。

4

2 回答 2

0

您需要通读高级开发指南Record Filters中的内容。

如果您尝试在属性上使用记录过滤器,则需要在 Developer Studio 中为该属性显式启用它,而您的维度将自动具有应用记录过滤器的能力。当您有明确的值要过滤时,这将有所帮助,例如brand.name.

您的查询应如下所示:

Nr=AND(OR(brand.name:kodak,brand.name:canon),prod.color:red)

首先在您的 JSP 参考应用程序中尝试此操作,以确保一切正常。

于 2014-06-02T11:48:28.707 回答
0

这将需要一些自定义编码。

在自定义磁带中添加 DimensionSelectorEditor 和 BoostBuryEditor,其中 DimensionSelectorEditor 驱动 BoostBuryEditor 中的值。为了避免创建自定义编辑器,请仅使用编辑器的 Boost 部分来获取维度值。

下面的代码显示了模板中的编辑器。

<editors:DimensionSelectorEditor
    propertyName="dimensionName" idProperty="dimensionId" label="Dimension Name"
    enabled="true" />
<editors:BoostBuryEditor propertyName="dimensionValues"
    boostProperty="featuredOneBoost" buryProperty="featuredOneBury"
    label="Filter By Boost - First Dimension Choice"
    dimensionIdProperty="dimensionId" enabled="true" />

在模板的支持 Java 处理程序代码中,提取这些值并将它们添加到当前导航状态的现有记录过滤器中,作为预处理方法中的 OR。

下面的关键示例代码:

getNavigationState().getUrlFilterState().getRecordFilters().add(FilterUtils.or(new PropertyConstraint(dimensionName, dimensionValue)));
于 2016-10-16T16:00:00.860 回答