我想在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