我想在ASP.NET MVC中构建一个Web应用程序,并且需要构建一个非常复杂的搜索功能。当用户输入搜索词时,我想搜索各种数据源,其中包括文档,数据库中的表格,网页URL以及一些API(如Facebook)。任何提示,教程和提示将不胜感激。如何在C#中构建搜索引擎
回答
你的问题表明你可能不打算从零开始实现整个功能,所以这里有一些你可能会觉得有用的链接。
一个(最简单的)选项是使用第三方搜索引擎(例如Google Custom Search,但兵大概也有类似的API)。这允许您使用Google搜索(仅)您的页面,并以自定义的方式显示结果。限制在于它只搜索某些(链接)页面上显示的数据。
更复杂的方法是使用一些为您实现索引的.NET库(基于您提供的数据)。一个流行的图书馆是例如Lucene.Net。在这种情况下,您可以明确指定要搜索的数据(网页中的相关内容,数据库内容等),以便更好地控制正在搜索的内容(但这有点多)。
lucene.net已经死了,它有其他的选择吗? – Augustas 2017-05-02 06:40:20
@augustas我可能是错的,但似乎有一些活动 https://git-wip-us.apache.org/repos/asf?p=lucenenet.git(48小时在https:// git-wip- us.apache.org/repos/asf?p=lucenenet.git;a=commit;h=159c33ba2abbcfb9bf1882f672ba113ace9aa363) 这是一个开启和关闭“闲暇时间”项目的人从apache(和偶尔其他大公司)谁工作它。 3.0.3已经死了AFAIK。 4.8是在两年前的测试版。不知道那里发生了什么 http://code972.com/blog/2016/07/98-lucene-net-4-8-is-in-beta-and-we-need-your-help - 那么半死吧?就像好莱坞现在那些真正快速的僵尸之一一样。 – twobob 2017-05-03 01:47:55
构建实际的搜索索引结构和算法不是小事。这就是为什么人们使用Lucene,狮身人面像,Solr等。使用google.com,正如评论中所建议的那样,如果配置合适,并且在使用这些免费搜索引擎时,将无法控制和较差的匹配用过的。
我建议考虑看看Solr,它给你的Lucene的权力,但它更容易使用,再加上它增加了一些方便的功能,如高速缓存,分片,刻面等
SolrNet是Solr的客户端对于.Net,它有一个示例ASP.NET MVC应用程序,您可以使用它来查看它是如何工作的以及作为项目的基础。
声明:我是SolrNet的作者。
它还在积极发展中吗?该github看起来活跃tho – JochemQuery 2017-09-04 08:27:44
我为我的MVC 4网站编写了一个自定义搜索引擎。它解析View目录并读取所有的.cshtml文件,并使用正则表达式匹配提供的条款。这里是基本代码:
List<string> results = new List<string>();
DirectoryInfo di = new DirectoryInfo(System.Configuration.ConfigurationManager.AppSettings["PathToSearchableViews"]);
//get all view directories except the shared
foreach (DirectoryInfo d in di.GetDirectories().Where(d=>d.Name != "Shared"))
{
//get all the .cshtml files
foreach (FileInfo fi in d.GetFiles().Where(e=>e.Extension == ".cshtml"))
{
//check if cshtml file and exclude partial pages
if (fi.Name.Substring(0,1) != "_")
{
MatchCollection matches;
bool foundMatch = false;
int matchCount = 0;
using (StreamReader sr = new StreamReader(fi.FullName))
{
string file = sr.ReadToEnd();
foreach (string word in terms)
{
Regex exp = new Regex("(?i)" + word.Trim() + "(?-i)");
matches = exp.Matches(file);
if (matches.Count > 0)
{
foundMatch = true;
matchCount = matches.Count;
}
}
//check match count and create links
//
//
}
}
}
}
return results;
它似乎不工作,如果一些数据从数据库中读取,对不对? – 2016-11-17 08:06:25
- 1. 如何构建概念搜索引擎?
- 2. 如何构建内部搜索引擎?
- 3. 在java中构建搜索引擎
- 4. 使用AJAX搜索引擎在Chrome中搜索搜索引擎
- 5. 构建网络搜索引擎
- 6. 建筑搜索引擎产品搜索
- 7. 创建搜索引擎
- 8. 在搜索引擎中自动搜索
- 9. 如何构建搜索引擎优化的图像目录?
- 10. 如何构建即时搜索引擎? (与排名/相关性)
- 11. 如何使用Solr/Lucene构建简单的搜索引擎?
- 12. 如何构建搜索引擎? (2013更新)
- 13. 搜索引擎
- 14. 如何创建一个搜索,搜索引擎友好(mod_rewrite htaccess)
- 15. 如何创建搜索引擎,自动搜索语音识别
- 16. 如何使用php创建搜索引擎友好搜索?
- 17. 如何为搜索引擎建立文本索引?
- 18. JQGrid&搜索引擎索引
- 19. 如何在C#中为元搜索引擎获得免费搜索API
- 20. 在asp.net中创建网站的搜索引擎c#
- 21. 如何防止登台在搜索引擎中编入索引
- 22. 如何在C++或java代码中调用搜索引擎
- 23. 如何在搜索引擎优化
- 24. 如何在Fusebox 5.1 noxml中创建搜索引擎安全URL?
- 25. 如何在asp.net中创建搜索引擎
- 26. 如何在nuch搜索引擎中创建自定义字段?
- 27. 如何创建搜索引擎或修改现有搜索引擎仅用于网站内的搜索?
- 28. 搜索引擎的数据结构?
- 29. 搜索引擎索引 - 任何替代PhantomJs快照的搜索引擎优化?
- 30. 使用Django构建搜索引擎的建议
你在哪里被卡住了?你被索引存储,搜索或查询分析困住了吗?搜索引擎是一个相当大的话题 – vodkhang 2010-05-29 02:07:10
你有什么困难?如果您在构建复杂的搜索引擎时遇到问题,我会先从一个简单的*开始。构建仅搜索文档的内容,因为您最终需要这部分内容。然后继续进行数据库搜索。 – 2010-05-29 02:07:48
指向谷歌。瞧,即时搜索。 – Randolpho 2010-05-29 02:11:17