sql - 搜索整个数据库记录的模式,而不是特定字段

标签 sql database database-design search full-text-search

越来越多,我看到搜索不仅在特定列中找到子字符串,而且似乎在所有列中搜索。例如在 Amazon 中,您可以在其中搜索“Arnold”,它会同时找到阿诺德施瓦辛格主演的电影 Running Man 和 Gund 玩具 Arnold the Snoring Pig。我不知道这种搜索的术语是什么(广泛搜索?全局搜索?),这让我很烦恼。但我真正想知道的是快速方式完成此类搜索的正常模式是什么。

执行此操作的明显且缓慢的方法是在标题中搜索子字符串“Arnold”,在作者中搜索“Arnold”,在描述中搜索“Arnold”等。

想到的第一个快速解决方案是为用于描述产品的每个词存储一个到产品本身的映射,然后搜索该词映射。这可能很快,但对我来说似乎不是很节省空间。

可能有一百种方法可以实现这一点,其中一些甚至可能不使用数据库。但什么是常态?

最佳答案

我过去通过将项目的 XML 版本存储在表的 XML 列中,然后在该列而不是其他列中进行搜索来实现这一点。

关于sql - 搜索整个数据库记录的模式,而不是特定字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3662152/

相关文章:

android - SQLite 实现安卓

database-design - 如何使用 MySQL 表表示规则?

sql - 使用 char 作为主键/外键是否不行?

mysql - SQL 返回 2 个值重复的所有行

sql - 选择等于 10 位的行

database - Recordset 不支持 adseek

mysql - 3 关系数据库应该如何看待以及如何使用 Laravel Eloquent 创建查询?

sql - Presto中包含 ' '字符的 key 的JSON_EXTRACT问题

sql - 选择联合计数和组,多个表,postgresql

python - 值错误 : malformed sha256_crypt hash (checksum must be exactly 43 chars)