C# 如何使用与google相同的全文搜索在表中搜索?

C# 如何使用与google相同的全文搜索在表中搜索?,c#,sql-server,asp.net-mvc,tsql,C#,Sql Server,Asp.net Mvc,Tsql,我正在为大公司做一个漂亮的企业文档管理系统DMS项目 DMS数据库是Microsoft SQL Server 2012,文档表名是document 此时,文档表中有超过4000000条记录可用 我需要通过SQL Server全文搜索在文档表中搜索,与Google搜索相同,具有非常好的性能,响应时间不超过1秒 用户可以查看单个文本框进行智能搜索。例如,用户需要查找代码包含1107且作者姓名包含Albert的文档,因此在该文本框中键入:1107 Albert 我生成了以下查询以查找此项: selec

我正在为大公司做一个漂亮的企业文档管理系统DMS项目

DMS数据库是Microsoft SQL Server 2012,文档表名是document

此时,文档表中有超过4000000条记录可用

我需要通过SQL Server全文搜索在文档表中搜索,与Google搜索相同,具有非常好的性能,响应时间不超过1秒

用户可以查看单个文本框进行智能搜索。例如,用户需要查找代码包含1107且作者姓名包含Albert的文档,因此在该文本框中键入:1107 Albert

我生成了以下查询以查找此项:

select count(*) over() totalRowFound, DocumentID 
from dbo.Document 
where contains(*,N'("*1107*")) AND contains(*,N'("*Albert*"))
我在contains函数中使用了*以获得更好的搜索结果,但响应时间约为4~7秒

我知道谷歌的算法非常复杂,但我想用不到1秒的响应时间在4~1000万条记录中实现像谷歌概念一样的智能搜索

如何改进此查询? 或
和谷歌一样,智能搜索的最佳实践是什么?

使用*搜索所有列 试一试

如果要搜索特定列,搜索所有列如何获得更好的搜索结果

不去SQL全文搜索和谷歌一样,因为他们不是相同的引擎。 我认为谷歌引擎不可用。 Lucene是一个免费的搜索引擎


你为什么要走自己写DMS的路

当你说“谷歌搜索”时,你真正的意思是。Apache的Lucene项目以类似的索引方式提供此功能。SQLServer的全文也使用反向索引


如果您希望非常、非常快速地执行文本搜索,您可能希望尝试使用Lucene或Solr,因为它具有SQL Server全文搜索所不具备的某些功能,反之亦然,并且在正确配置后,可以执行得非常好。

您可以使用它。Lucene是Solar和Elastic搜索引擎。Lucene并不总是比SQL FTS快。是的,你是对的。我淘汰了一批。这两种产品在使用不当时都会表现糟糕。是否可以通过将这些搜索词更改为nvarchar 1107和Albert的简单短语,不再寻找前缀搜索,从而减少总体查询时间?在原始问题中,单引号的数量似乎也不一致。@tommy\u有很多选项需要优化。OP是无响应的。
where contains(code,N'("*1107*"))