gpt4 book ai didi

java - 当我们在 url 中提供编码值和英文字符时,Endeca 查询中的 Nrs 不会获取结果

转载 作者:太空宇宙 更新时间:2023-11-04 14:10:49 28 4
gpt4 key购买 nike

我们使用 Endeca 来获取记录,因为它们数量巨大。我们在前端有一个数据表,显示通过 Endeca 查询从 Endeca 获取的记录。现在,当我们根据前端的复选框值过滤结果时,查询会附加 Nrs 属性并获取过滤后的结果。对于任何中文、俄语或特殊字符,我们对它们进行编码并创建查询。示例:

N=0&Ntk=All&Ntx=mode+matchall&Ntt=rumtek&Nrs=collection()/record[(customerName="%22RUMTEK%22+LTD.")]&No=0&Ns=,Endeca.stratify(collection()/record[not%20(invoiceDate)])||invoiceDate|1||,Ende ca.stratify(collection()/record[not%20(invoiceNumber)])||invoiceNumber|1

在上面的查询中,结果是根据值“rumtek”获取的,我们通过给定值““RUMTEK”LTD.”来应用过滤器。编码后,过滤器值转换为“%22RUMTEK%22+LTD.”。此查询未获取任何结果。

当我们给出完整的编码术语(就像我们给出编码值的任何中文单词)或任何英语单词时,就会获取结果。当给出的术语包含双引号 (") 例如“ABC”LTD. 或 AB&C (AB%26C) 时,不会获取结果。

还有一个问题是:- 如果我们将 AB 设置为停用词(不会被搜索的单词)会怎么样。如果我们搜索 AB&C,那么它会搜索 AB&C 的结果,还是会将整个术语作为停用词。

如有任何建议,我们将不胜感激。

提前致谢。

最佳答案

首先,您需要确保您的 Nrs 参数经过完整且正确的 URL 编码。其次,您需要确保正确转义双引号,因为您想与它们匹配。

正如您所说,您的数据包含一些记录,其 customerName 属性为(不带括号)[“RUMTEK”LTD.]。根据 MDEX 开发指南,要使用双引号作为文字值,您需要通过在其前面添加双引号字符来转义它(多么令人困惑!)。因此,为了匹配这一点,您需要有一个查询字符串,例如(为了可读性分成几行):

N=0&
Ntk=All&
Ntx=mode+matchall&
Ntt=rumtek&
Nrs=collection()/record[(customerName="""RUMTEK"" LTD.")]&
&No=0&
Ns=,Endeca.stratify(collection()/record[not%20(invoiceDate)])||invoiceDate|1||,Endeca.stratify(collection()/record[not%20(invoiceNumber)])||invoiceNumber|1

现在,它还没有准备好。您需要对整个 Nrs 参数值进行 URL 编码。所以它会变成:

N=0&
Ntk=All&
Ntx=mode+matchall&
Ntt=rumtek&
Nrs=collection%28%29%2Frecord%5B%28customerName%3D%22%22%22RUMTEK%22%22+LTD.%22%29%5D&
&No=0&
Ns=,Endeca.stratify(collection()/record[not%20(invoiceDate)])||invoiceDate|1||,Endeca.stratify(collection()/record[not%20(invoiceNumber)])||invoiceNumber|1

这应该可以满足您的需求,而无需诉诸通配符查询。

关于java - 当我们在 url 中提供编码值和英文字符时,Endeca 查询中的 Nrs 不会获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28341228/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com