我的网站有超过400,000项。有些相似,有些截然不同。我们希望提供一种以最佳方式搜索这些项目的方法。在交付网站后,它使用全文索引。解决方案充其量是基本的,在最坏的情况下是非常不足的。
那么搜索这些项目的最佳方法是什么?它们存储在SQL Server数据库(2005)中。我们的网站是用C#2.0设计的。
目前正是这个过程:
答案 0 :(得分:7)
看看Lucene.NET。我认为这比SQL Server中的全文搜索有了很大的改进。
答案 1 :(得分:2)
SQL Server Central有一篇关于使用SQL Server创建类似Google的全文搜索的文章。不幸的是你必须注册查看完整的文章,但注册是免费的,他们发布了很多好的信息。这是链接:
http://www.sqlservercentral.com/articles/Full-Text+Search+(2008)/64248/
摘录:
...
Google风格
成功申请的关键是 使其易于使用但功能强大。 谷歌已经用他们的网络做到了这一点 搜索引擎。查询的语法 简单直观,但是 功能全面。虽然基本 Google查询的构建块是 很简单你可以将它们组合在一起 有力的方式。我将从基础开始 谷歌查询语法并添加一些 额外的运营商利用 SQL Server CONTAINS的强大功能 谓词语法。完整的谷歌 语法在Google中定义 帮助:作弊表 http://www.google.com/help/cheatsheet.html
...
这篇文章有完整的示例代码,甚至还有一个下载链接。即使你不打算实现它,它也是一个有趣的读物。
答案 2 :(得分:1)
您可以查看Lucene.net,它将最小化对搜索查询的数据库调用。
来自http://incubator.apache.org/lucene.net/
Lucene.Net是源代码, class-per-class,API-per-API和 Java Lucene的算法端口 搜索引擎到C#和.NET 利用Microsoft .NET的平台 框架。
Lucene.Net坚持API和 原始Java中使用的类 实施Lucene。 API 名称和类名称 保留意图给予 Lucene.Net C#的外观和感觉 语言和.NET Framework。对于 例如,方法Hits.length()in Java实现现在读取 Hits.Length()在C#端口。
除了API和类 端口到C#,Java的算法 Lucene被移植到C#Lucene。这个 表示使用Java创建的索引 Lucene是来回兼容的 与C#Lucene;在阅读时, 写作和更新。实际上是一个Lucene 索引可以同时搜索和 使用Java Lucene和C#更新 Lucene处理。
答案 3 :(得分:1)
您可以使用Google网站搜索来提供搜索结果。并不总能让您灵活地根据需要显示结果,但对于许多人来说已经足够了。
答案 4 :(得分:0)
第二步是有争议的 - 你认为什么词是“可怕的”?如果您使用SQL Server内置全文搜索,那么您可以在输入查询中手动删除关键字,而不是在sql server中设置鼻子/停用词列表。
以下是我希望在StackOverflow以及提供搜索功能的任何其他网站上看到的一项功能:
同时考虑使用FTS的第三方解决方案,例如Lucene或Sphinx - 它们可以提供比内置功能更好的用户体验。 第三方FTS组件的一些优点是:减少数据库负载,提高搜索结果的相关性,提高索引速度,减小数据库的大小。