Endeca体验经理查询

时间:2014-06-02 05:10:23

标签: endeca

我正在使用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搜索佳能和柯达,对尺寸product.color搜索红色,蓝色。我的要求是应用符合四种条件中的任何一种的OR条件并给出结果。

我需要OR条件查询。

请建议!

感谢。

2 个答案:

答案 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)));