如何解决Oracle 数据库的模糊搜索
我需要在我们的 Web 应用程序中实现模糊搜索。起初我们在前端有硬编码的选项,但现在我们必须处理数据库数据(只返回前 10 个候选)。我只是想询问一些输入字段的数据流应该如何的最佳方法。我的想法是:
- 用户在搜索字段中键入任何字符
- 前端向后端发出 POST 请求
- 后端要求数据库启动一些模糊搜索程序
- 后端将 10 个最佳结果的列表返回给前端
- 前端显示它们
我最担心的两个问题是:
- 我能否在 1 秒内处理大量数据(例如 100 000)?
- 在相对较短的时间内对如此大量的数据进行模糊搜索,哪种算法最好? (我正在搜索可以包含 2 个或更多单词的工具名称,例如 我的示例工具) - 我已经检查过一些像 ULT_MATCH 和 SOUNDEX,但我不知道它是否是正确的选择
- 每次用户输入字符时都可以发出请求吗?如此大量的 HTTP 请求不会使我们的应用程序停止运行吗?
解决方法
Oracle 确实有一个强大的文本搜索功能,它被称为 Oracle Text。它允许在大块文本或文档中进行搜索。它允许停用词、同义词、模糊搜索等。
- 亚秒级搜索应该没问题
- 检查 Fuzzy Matching and stemming 或谷歌“Oracle 文本模糊搜索”
- 你自己怎么看?每次每个用户键入一个字符时都会针对 > 100000 行发出请求?您可能可以为此扩展后端,但这没有意义...也请查看@Randy 的评论。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。