我有一个包含多个表的SQL数据库,我正在创建一个搜索功能。除了对不同的表进行多次查询之外,还有不同的方法可以解决所述搜索功能吗?
我应该补充一点,我的很多内容都是数据库驱动的,以便更容易维护。 Lucene不会为此工作,对吗?
答案 0 :(得分:3)
需要考虑的不同方法:
1)预先烘焙多个查询,如您所述。
2)根据用户输入的标准动态放置的动态sql。
3)如果涉及文本,则基于SQL Server全文搜索或Lucene。
在我的开源应用程序BugTracker.NET中,我同时执行2和3(使用Lucene.NET)。
我在这里记录了如何使用Lucene.NET: http://www.ifdefined.com/blog/post/2009/02/Full-Text-Search-in-ASPNET-using-LuceneNET.aspx
答案 1 :(得分:0)
由于您已使用Asp.net标记了该问题,我想您要搜索您的网页。在这种情况下,您可以使用Indexing Server轻松执行自由文本搜索,搜索生成的html和您设置的任何关键字。
正如Corey Trager所说,使用Lucene.NET也是一种选择。它具有快速且易于使用的良好声誉。
答案 2 :(得分:0)
虽然其他答案提供了很好的建议,例如使用Lucene,但我更喜欢使用自定义缓存方法。
因此,对于我帮助创建的网站,我们每隔几个小时将可搜索的数据从许多表缓存到一个包含以下列的简单表中:
然后我会编写我的SQL语句,使用不同的函数来搜索此字段以确定排名。
答案 3 :(得分:0)
你可能想查看我写的关于编写全文查询的帖子,它在C#中,但它易于移植,或者只是将其粘贴在库中并使用它。