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

本文关键字:字符串 优化 搜索 存储 何存储 | 更新日期: 2023-09-27 18:04:48

我有一个包含类型为VARCHAR的列的表。我想根据用户输入查询在列内搜索字符串。我想实现近似搜索。我的表包含大量的记录。我认为有一些方法可以实现搜索。

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

  2. 单独或批量获取记录,并应用搜索算法。(但会快速建立数据库连接,可能会降低性能)

我相信,将会有一些其他的机制来实现这个功能或一些技术来存储数据,以便我可以更快地搜索它。

谁能给我更好的主意,实现这个?

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

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

SQL Server有内置的功能来做你想做的事情,它被称为全文搜索。

微软概述:http://msdn.microsoft.com/en-us/library/ms142571.aspx

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

当您想要搜索时,查询语言与"正常"文本匹配不同。

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