【发布时间】:2013-11-27 15:58:51
【问题描述】:
如何在多个字段的组合上创建 Endeca 查询 [就像 sql 查询中的 where 子句一样]。假设我们有三个索引的字段是 -
- empId
- 员工姓名
- 员工性别
现在,我需要一个类似“where empName like 's%' AND empGender=male”的查询
谢谢。
【问题讨论】:
标签: endeca
如何在多个字段的组合上创建 Endeca 查询 [就像 sql 查询中的 where 子句一样]。假设我们有三个索引的字段是 -
现在,我需要一个类似“where empName like 's%' AND empGender=male”的查询
谢谢。
【问题讨论】:
标签: endeca
首先,
在Advanced Development Guide 中结帐Record Filters。
如果您尝试在属性上使用Record Filter,则需要在 Developer Studio 中为该属性显式启用它,而您的Dimensions 将自动能够应用Record Filter。当您有明确的值要过滤时,这将有所帮助,例如 empGender。
您的Record Filter 可以如下所示:
Nr=AND(empGender:male)
您可以进一步使用 Ntk 参数指定要搜索的字段,因此假设您的 empName 字段已启用通配符搜索(在 Developer Studio 中配置),搜索此字段将如下所示:
Ntk=empName&Ntt=s*
因此,假设您的属性已正确配置,您上面的示例可能最终如下所示:
Nr=AND(empGender:male)&Ntk=empName&Ntt=s*
为了更进一步,您可以同时指定Search Filters(即Ntk + Ntt 参数)。我没有为通配符尝试过这个,所以你需要自己确认,但是结合Search Filters你用|分隔它们
Ntk=empName|empId&Ntt=s*|1234*
我建议您在参考应用程序中手动构建查询以确认您获得预期结果,然后开始在您的应用程序中编写代码。
【讨论】:
Record Filter (Nr) 而不是Search Filter。所以你的查询应该是这样的:Nr=OR(empId:1,empId:2,empId:3)。假设您为 empId 属性(或者它是一个维度)启用了Record Filters
radimbe,这个用例的记录过滤器的问题是它们需要精确。这意味着您不会得到拼写更正、词库扩展、不区分大小写或词干提取。用户不太可能输入这样的精确信息。
Saraubh,您可以进行布尔搜索来进行 OR 文本搜索查询。您还可以使用Endeca Query Language 指定一组复杂的布尔逻辑,该逻辑超越了布尔搜索,并包含拼写更正、词干提取等。
但总的来说,我认为对于这样的应用程序,您应该远离同时搜索特定的单个字段,并利用维度的分面功能来指导用户。此外,按重要性顺序同时搜索多个字段的搜索框确实是为此类应用程序简化用户界面的方法。
【讨论】: