是否有一个好的标签搜索系统,我可以在我的C#.NET原型中使用,也可以在ASP.NET上运行?
答案 0 :(得分:3)
当您说“标记搜索系统”时,我将假设您的意思是社交网络中的功能允许您的用户标记内容,从而通过标记云冒泡您网站中最受欢迎的内容。还允许用户通过标记内容等方式进行导航。??
我喜欢创建一个SystemObjects表来保存我系统中可能已经应用了标签的各种表(或评论或评级等),从而允许我拥有一个可以跨越整个数据库的通用标记系统。然后我还有一个SystemObjectTags表,它将引用SystemObjectID(告诉我哪个表有我感兴趣的记录)以及SystemObjectRecordID(它告诉我我感兴趣的是哪个特定记录)。从那里我得到了关于标签和标签内容的所有细节数据。然后,我希望在Tags表中保留标记特定信息的运行列表,该表保留TagID(SystemObjectTags表引用的)的唯一标记(标记的字符串值),整个系统中标记使用的计数(a所有用途的总和值)等。如果你有一个高流量站点,这些数据应该保存在你的缓存中,这样你就不会太频繁地点击数据。
使用此子系统,您可以转到搜索功能。您拥有这三个表所需的所有数据,以便轻松地执行过滤,搜索等。但是,您可能会发现此处有太多数据,并且表格非常通用,因此您的搜索不是快速,因为更优化的表结构可能是。出于这个原因,我建议您使用Lucene.NET索引来保存所有可搜索的数据。 Lucene.NET提供了非常快的读取时间,并且在搜索算法方面提供了比SQL Server freetext内容更多的灵活性。
这将允许您按标签过滤内容,按标签搜索内容,标记计数等.Lucene.net虽然是一个很大的可怕主题!准备好做一些阅读,以了解过去的基本知识。
答案 1 :(得分:0)
我们使用的选项是将我们的“标签”放在页面上的Meta关键字中,然后我们使用Bing进行搜索。
http://msdn.microsoft.com/en-us/library/dd251056.aspx
我们的建筑师说得最好。 “让搜索引擎尽其所能。搜索。”
您可以将搜索范围限制在您的网站上,拉回结果并自行显示...在您自己的页面上使用您自己的格式。
唯一的缺点是,在您的网站上线并被编入索引之前,您无法完全测试您的搜索。