用于搜索整个DB记录的模式,而不是特定字段

时间:2010-09-07 19:49:43

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

越来越多,我看到的搜索不仅会在特定列中找到子字符串,而且会在所有列中搜索。一个例子是亚马逊,在那里你可以搜索“阿诺德”,它发现电影 Running Man 由Arnold Schwarzeneggar主演,而Gund玩具 Arnold the Snoring Pig 。我不知道这种类型的搜索是什么术语(广泛搜索?全局搜索?),这让我感到困惑。但我真正想知道的是 QUICK 方式完成此类搜索的正常模式是什么。

显而易见且缓慢的方法是在标题中搜索子字符串“Arnold”,在作者中搜索“Arnold”,在描述中搜索“Arnold”等。

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

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

2 个答案:

答案 0 :(得分:1)

我过去通过在表格的XML列中存储XML版本的项目,然后在该列中搜索而不是其他列来完成此操作。

答案 1 :(得分:1)

也许他们没有按照您的预期存储数据。

例如,他们可以在一个表中存储所有标题,作者,描述和所有其他可搜索字段,并使用属性来区分字段的类型。