如何形成一个Endeca查询,其中一个字段必须以某些字母开头

时间:2012-10-22 07:20:10

标签: range startswith endeca

是否可以形成一个Endeca查询来检索必须以某些字母开头的字段?比如说第一封信的所有用户都是A?我检查了Range过滤器,但它只支持数字字段以及Wild Card搜索。但到目前为止,没有什么能奏效。

3 个答案:

答案 0 :(得分:2)

创建维度是解决问题的一种方法,如Paul Lemke所述。由于性能开销以及不相关的记录,不存在选项。 但我们使用其他几种替代方案解决了这个问题。

  1. 为Object创建一个名为“StartWith”的新属性,存储Object的第一个字母并使其可搜索。我们发现它比创建Dimension更容易。
  2. 有一个问题,像'A'这样的字母通常是Endeca中的停用词。我们可以帮你解决这个问题。

    1. 获取第一个字母的ASCII值并将数值存储到该属性中。这种方法的另一个优点是我们可以使用范围过滤器。但是你无法搜索“AB”类的要求。
    2. 预先挂起一些字符,如^^^我的名字,然后搜索^^^ M.这种方法的优点是你可以搜索字母以AB开头的条件。

答案 1 :(得分:1)

Endeca at it的当前版本(6.1)没有一个搜索过滤器,其功能类似于其他编程语言中的“startswith”功能。

我有两个选项可能会让你接近:

  1. 如果你真的只是寻找第一个字母,你可以为字母表的每个字母(A,B,C ......)设置一个Dimension值。然后,您可以优化每个字母,只查看以字母A,B,C等开头的值。唯一的缺点是您只能根据您设置的维度值进行过滤。因此,如果添加“A”,则无法过滤以“AB”开头的任何内容。你可以下线并添加“AB”,“BA,”CA“等等,但这样会很快变得笨拙。

  2. 如果您想要更接近“startswith”功能的东西,唯一的另一个选择是使用通配符搜索。基本上你会做这样的属性搜索:N=0&Ntk=Username&Ntt=ab*

    使用通配符搜索的技巧是它将在该属性中的多个单词中执行此操作。所以假设你有这些值的数据集:

    • 史密瑟斯史密斯
    • 拉里史密斯
    • 珍娜史密斯

    搜索sm*实际上会返回所有3个结果,因为“sm”是他们的姓氏。即使是带有破折号的人也会像Endeca认为的那样回归,这是一个单独的词。 (虽然可能会关闭它,但不确定)。

    所以基本上归结为:在一个属性中粘贴一个单词,设置该属性以允许通配符搜索,然后对该属性执行“blah *”,你应该得到你正在寻找的结果。

答案 2 :(得分:0)

您是否尝试过第一个相关等级模块,该模块应根据与该字段开头的接近度进行排名?

这听起来与您正在寻找的相似,并且与外卡一起可能会产生您想要的结果。