实现搜索的不同方式

Posted

技术标签:

【中文标题】实现搜索的不同方式【英文标题】:Different ways of implementing search 【发布时间】:2021-12-01 00:51:12 【问题描述】:

在为存储在本地数据库中的数据实现搜索功能时,您会如何处理?

    当用户键入时,从数据库中预取整个列表,然后对该缓存列表执行过滤(必须创建一个备份变量)

    每次用户输入时进行数据库查询

表中有 200-300 行。每行包含 10-15 列。

PS:我一直习惯于对缓存列表进行过滤,主要是因为无论如何我都需要显示完整列表,所以整个数据集已经预取。

假设您不必首先显示整个列表,仅在用户开始输入时显示,在这种情况下执行数据库查询总体上是否更好?

我只是不确定。我看到一个同事在做查询。

是的,我懒得测试数据库查询的性能。视觉上几乎没有延迟。

欢迎任何意见!

谢谢!

【问题讨论】:

这里有一些建议:***.com/questions/44184769/… @Chris,谢谢,但我不是在问如何实现它。我正在征求关于 2 种不同方法的意见。 啊,这种情况下你想要这个:meta.***.com/questions/255468/opinion-based-questions 您希望用户进行多少次搜索? 很难说。我猜 2-5 次。 【参考方案1】:

"2. 每次用户输入时进行数据库查询。"是最好的选择。因为对于第一名,您必须同时考虑空间和时间复杂度。通过 sqlite 中的高效查询,您可以快速获取数据,而且这种方法也更简洁。

【讨论】:

所以你的意思是数据库查询根本不贵? 对于第一种方法: 1. 运行查询以选择所有数据 2. 在数据列表中返回它们 3. 使用一些逻辑搜索列表。对于第二种方法 1. 编写一个有效的搜索查询。 2.返回结果 哪一个更容易管理? 两者都相当简单。 这不是困难的问题。在第一种方法中,您需要对一个功能进行两个单独的操作,这违反了单一责任原则。那是我的观点。当表列更改或需要来自多个表的数据时。您可以更改获取查询,然后再次更改搜索逻辑。它只会让你的代码更难被其他开发者理解和管理。

以上是关于实现搜索的不同方式的主要内容,如果未能解决你的问题,请参考以下文章

尝试以不同的方式实现优先级队列

谷歌在搜索结果中以不同方式显示网站标题

leetcode每日一题(2020-07-21):95. 不同的二叉搜索树 II

阐明不同 minikanren 实现中的搜索算法

阶段一-02.分类,推荐,搜索,评价,购物车开发-第2章 商品推荐+搜索功能实现-2-3 搜索 - 商品详情功能分析

通过PSO实现不同函数的目标值计算和搜索