- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我们使用 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/
我们使用 Endeca 来获取记录,因为它们数量巨大。我们在前端有一个数据表,显示通过 Endeca 查询从 Endeca 获取的记录。现在,当我们根据前端的复选框值过滤结果时,查询会附加 Nrs 属
我是一名优秀的程序员,十分优秀!