我正在使用 ASP.NET 和 SQL Server 2008 开发一个 Web 应用程序。我的数据库中有大约 1,000,000 篇文章,并且我已经激活了全文搜索。
现在,我想在文章中搜索,搜索文本框需要 3 个功能:
- 自动完成:当用户输入一个单词(Wor)时,我想给他看(World,Word,...)。
- 词条建议:当用户输入一个词(世界)时,我想向他展示下一个词条(第一次世界大战,第二次世界大战,...)。
- 拼写检查:当用户输入错误的单词时,我想更正它。
第一个场景可以很容易地实现,如下所示:
SELECT TOP 10 *
FROM sys.dm_fts_index_keywords(db_id('MyDB'), object_id('Articles'))
WHERE display_term LIKE 'Wor%'
ORDER BY document_count DESC
我不知道如何实现第二种情况。IMO 我应该创建一个表(FirstWord、SecendWord、Frequency)来存储术语序列及其频率(从文章内容中提取它们)并按频率搜索第一个词序。
对于第三种情况:我已经阅读了拼写检查算法(ASpell、NSpell、...),我想知道它们是否有任何 SQL Server + .NET 实现?
有什么解决方案可以满足我的需求吗?我更喜欢在 SQL Server 中将它们全部实现为 SP。
更新:这是我应该搜索的记录内容:
希特勒和墨索里尼为西班牙弗朗西斯科·佛朗哥将军领导的民族主义起义提供了大量的军事和财政支持。苏联支持现政府,西班牙共和国,表现出左倾倾向。此外,超过 30,000 名被称为国际旅的外国志愿者与佛朗哥作战。德国和苏联都利用这场代理人战争作为测试改进武器和战术的机会。1937 年 4 月,德国秃鹰军团对格尔尼卡的蓄意轰炸导致人们普遍担心下一场重大战争将包括对平民的广泛恐怖轰炸袭击。[30][31] 虽然有一些小范围的抵抗,但国民党阵线于 1939 年 4 月 1 日宣布胜利。 [32] 值得注意的是,五个月后,德国袭击了波兰,引发了第二次世界大战。