我有一个正在构建数据表的项目,它将使用datatables.net-buttons按钮集合同时具有全局搜索输入(dom
:f
)和类似方面的过滤器。在大多数情况下,它工作得很好,但我不能告诉全局(search()
)忽略构面搜索(columns().search()
)使用的列。
这是有问题的,因为这些构面和全局搜索之间可能存在重叠,并且可能会为用户不想看到的构面进行假阳性匹配。
例如,假设我有一个电影标题,描述和评级的数据集,并且在评级上设置了一个方面(例如G
,PG
,PG-13
, R
,NC-17
),有人期望搜索G级电影来寻找孩子,然后他们输入NC
(例如在北卡罗来纳州的州 ,美国),他们会看到很多意想不到的不当匹配。虽然这是一个人为的示例,但希望它可以帮助解释该问题。
我发现数据表可以使我们extend search宽容,但我担心的是它必须首先搜索整个表,然后在其上进行三分之一†的迭代。这样我可以进一步优化结果集。对于较小的数据集,这不是问题,但我担心的是更大的数据集。
†在浏览器中调试过程使我发现search()
两次运行:第一次是调用search()
本身,第二次是调用draw()
时, table is redrawn。
如果我进入配置并将searchable: false
设置为我的构面,则columns().search()
将不再起作用。
还值得注意的是,columns().search()
是基于AND
的搜索-意味着所有列都必须产生匹配项,其中search()
是基于OR
的搜索如果ANY列匹配,它将起作用。
我的问题是,是否有办法同时使用columns().search()
和search()
,但又要互相排斥?或者,如果缺少我可以实现上述目标的配置。
我的版本:
- datatables.net:1.10.19
- datatables.net-bs4:1.10.19
- datatables.net-buttons-bs4:1.5.4
- datatables.net-sensitive-bs4:2.2.3
- datatables.net-rowreorder-bs4:1.2.5
- datatables.net-select-bs4:1.3.0