我正在使用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条件查询。
敬请指教!
谢谢。
发布于 2014-06-02 19:48:29
您需要在Advanced Development Guide中通读Record Filters。
如果您尝试在属性上使用记录筛选器,则需要在Developer Studio中为该属性显式启用它,而您的维度将自动具有应用记录筛选器的能力。当您有明确的值可供筛选时,这将有所帮助,例如brand.name。
然后,您的查询应该如下所示:
Nr=AND(OR(brand.name:kodak,brand.name:canon),prod.color:red)首先在JSP参考应用程序中尝试此功能,以确保所有功能都正常工作。
发布于 2016-10-17 00:00:01
这将需要一些自定义编码。
在自定义磁带盒中添加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)));https://stackoverflow.com/questions/23987669
复制相似问题