如何存储字符串以优化搜索

时间:2011-08-09 09:03:34

标签: c# sql-server search string-algorithm

我有一个包含VARCHAR类型列的表。我想根据用户输入查询在列中搜索字符串。我想实现近似搜索。我的桌子上有Lacs of records。我认为有一些方法可以实现搜索。

  1. 在C#中加载所有记录并在其上应用搜索算法。 (但它会占用太多内存。)

  2. 单独或以某种预定义的批量大小获取记录并在其上应用搜索算法。 (但它会迅速建立数据库连接,这可能会降低性能。)

  3. 我确信,会有一些其他机制来实现此功能或某种技术来存储数据,以便我可以更快地搜索它。

    有人可以给我更好的想法,实现这个吗?

2 个答案:

答案 0 :(得分:3)

Lucene是搜索的最佳方式之一。您仍然可以将您的字符串存储在数据库中,但是从中构建一个Lucene索引,然后使用它进行搜索。

答案 1 :(得分:2)

SQL Server具有内置功能,可以完全按照您的要求进行操作,称为全文搜索。

Microsoft的概述:http://msdn.microsoft.com/en-us/library/ms142571.aspx

一般的概念是告诉SQL Server哪些表/列包含可搜索的文本,并且它构建节省空间和查询效率的“全文索引”;这些索引是异步构建的(因此您的更新/插入不会减慢速度),并且由于SQL Server 2005它们与您的数据库一起存储(例如在备份中),因此它们很容易管理。

当您要搜索时,查询语言与“普通”文本匹配不同。

全文搜索甚至可以在免费的“SQL Server 2008 Express with Advanced Services”版本中使用,因此成本不再是一个问题。