我正在使用 Endeca 体验管理器。我需要在 Endeca 查询中过滤维度的结果。
我需要在 Endeca 查询中应用两个 OR 操作来获取维度。
给出一个示例查询以了解我的要求。
对维度brand.name 和red, blue 对维度product.color 的canon 和kodak 搜索。我的要求是应用与四个条件中的任何一个匹配的 OR 条件并给出结果。
我需要 OR 条件查询。
请建议!
谢谢。
我正在使用 Endeca 体验管理器。我需要在 Endeca 查询中过滤维度的结果。
我需要在 Endeca 查询中应用两个 OR 操作来获取维度。
给出一个示例查询以了解我的要求。
对维度brand.name 和red, blue 对维度product.color 的canon 和kodak 搜索。我的要求是应用与四个条件中的任何一个匹配的 OR 条件并给出结果。
我需要 OR 条件查询。
请建议!
谢谢。
您需要通读高级开发指南Record Filters
中的内容。
如果您尝试在属性上使用记录过滤器,则需要在 Developer Studio 中为该属性显式启用它,而您的维度将自动具有应用记录过滤器的能力。当您有明确的值要过滤时,这将有所帮助,例如brand.name
.
您的查询应如下所示:
Nr=AND(OR(brand.name:kodak,brand.name:canon),prod.color:red)
首先在您的 JSP 参考应用程序中尝试此操作,以确保一切正常。
这将需要一些自定义编码。
在自定义磁带中添加 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)));