如何在多个字段的组合上创建Endeca查询[就像sql查询中的where子句]。假设我们有三个索引字段是-
- empId
- empName
- emp性别
现在,我需要一个类似"where empName like's%'AND empGender=male"的查询
谢谢。
首先,
请在《高级开发指南》中签出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*
我建议您在参考应用程序中手动构建查询,以确认您得到了预期的结果,然后开始在应用程序中对此进行编码。
radimbe,这个用例的记录过滤器的问题是它们需要精确。这意味着您不会得到拼写更正、词库扩展、不区分大小写或词干。用户不太可能像这样输入精确的信息。
Saraubh,你可以做布尔搜索来做OR文本搜索查询。您还可以使用Endeca查询语言来指定一组复杂的布尔逻辑,该逻辑超越了布尔搜索,并将包含拼写更正、词干等。
不过,总的来说,我认为对于这样的应用程序,您应该放弃同时搜索特定的单个字段,并利用维度的分面功能来指导用户。此外,一个按重要性顺序同时搜索多个字段的搜索框实际上是为这类应用程序简化用户界面的方法。