我正在使用Endeca体验经理。我需要在维度的Endeca查询中过滤结果。
我需要在Endeca查询中对尺寸应用两种OR运算。
给出一个示例查询以了解我的要求。
针对尺寸brand.name搜索佳能和柯达,对尺寸product.color搜索红色,蓝色。我的要求是应用符合四种条件中的任何一种的OR条件并给出结果。
我需要OR条件查询。
请建议!
感谢。
答案 0 :(得分:0)
您需要仔细阅读Advanced Development Guide中的Record Filters
。
如果您尝试在属性上使用记录过滤器,则需要在Developer Studio中为该属性显式启用它,而您的Dimensions将自动具有应用记录过滤器的功能。当您有明确的值进行过滤时,这将有所帮助,例如brand.name
。
您的查询应该如下所示:
Nr=AND(OR(brand.name:kodak,brand.name:canon),prod.color:red)
首先在JSP参考应用程序中尝试这一点,以确保您完成所有工作。
答案 1 :(得分: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)));