模糊搜索后视图的 XPages 排序

XPages sorting of view after fuzzy search

我的 XPage 中有一个视图,其中 "search" 属性 绑定到 viewScope 变量。现在,根据我们客户的要求,我启用了 "fuzzy search" 选项 "true",因为他们希望视图显示类似的搜索结果(如果搜索词不完全匹配,他们将无法找到他们正在寻找的内容具体来说)。

这产生了另一个问题,即如果视图具有完美匹配甚至包含搜索变量,则它不会列在顶部而是列在视图下方很远的地方。

举个例子,视图的产品代码从 "EGSK" 到 "EGSY" 不等(该列表包含 EGSS、EGSC、EGST 等)。现在,如果他们搜索 "EGSC",它会包含在视图中但不在顶部。由于其他产品代码大多相差1个字符,因此它们都包含在结果中。

如何更改此设置,以便如果 viewscope 变量完全匹配,在启用模糊搜索的情况下在搜索时将其列在顶部?

搜索功能没有按匹配精确度排序的功能。所以这就是我要做的: - 将您的 UI 与视图分离。例如。使用托管 bean 和 repeat 来构建 UI 和 bean 中的方法,该方法为您提供行的自定义对象集合 - 将该方法构建到以您需要的任何方式查询视图的 bean 中。遍历视图条目并构建自定义对象的集合 - 在你 return 之前对它们进行排序。

这里的技巧是使用 Collections.sort,它允许您 specify your own sorting mechanism。您可以计算搜索词匹配的百分比并首先为此排序,然后按字符串排序 - 所有这些都在一个函数中。

警告:如果您的搜索 return 有很多值,您可能会 运行 超出时间 and/or 内存。

希望对您有所帮助