/// <summary> /// 取得原始文件,並將文件中的原始全文資訊(Para) 存入 Storage 中 /// </summary> /// <returns></returns> public bool Fetch() { try { int docId = 0; foreach (String aSrcFile in Directory.EnumerateFiles(srcDir)) { String rawContent = File.ReadAllText(aSrcFile); String[] paras = rawContent.Split(new String[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries); var server = MongoDbLib.GetServerConnection(ServerAddress); var database = server.GetDatabase(DbName); var collection = database.GetCollection<SourceDocument>(Constants.TblSourceText); for (int i = 0; i < paras.Length; i++) { var doc = new SourceDocument(); doc.DocId = docId; doc.ParaId = i; doc.Para = paras[i]; collection.Insert(doc); } docId++; } return true; } catch (Exception e) { return false; } }
static void Main(string[] args) { // 1. Create index repository & Make Index. // 1.1 Create repository. Indexer indexer = Indexer.Instance; Repository repo = indexer.CreateRepository("Test"); // 1.2 Add document by JSON format. repo.AddDocument("{'full_text': {'title': '一級淹水警戒區域 增至9縣市', " + " 'text':'(中央社記者黃巧雯台北12日電)受鋒面和西南氣流影響,各地降豪雨。水利署表示,截至今天下午5時,共18座水庫正洩洪、溢流或調節性放水;一級淹水警戒區域也從11日發布時的4個縣市,增至9個縣市。'}, " + " 'meta_data': {'created_time': '2012/06/01 13:24:33'}}"); // 1.3 Add document by object format. SourceDocument srcDoc = new SourceDocument(); srcDoc.FullText["title"] = "大雨灌進低底盤公車 乘客傻眼"; srcDoc.FullText["text"] = "暴雨襲台,全台災情不斷,現在就連行駛中的公車也遭殃,早上7點多時,一輛從三峽開往新埔捷運站的802公車,因為底盤低,經過淹水路段時,大雨直接灌進公車裡,車上乘客全嚇傻了,就像在坐船一樣,相當誇張。"; srcDoc.MetaData["created_time"] = DateTime.Now.ToString("yyyy/MM/dd HH:mm:ss"); repo.AddDocument(srcDoc); // 1.4 Make index. repo.MakeIndex(); // 2. Search the documents // 2.1 Search, returned by JSON format // // Format: // {"matches":2, // "search_time":0.041, // "results":[ // {"rank":1,"score":2,"hit_field":"一級<<淹水>>警戒區域 增至9縣市\r\n(中央社記者黃巧雯台北12日電)受鋒面和西南氣流影響,各地降豪雨。水利署表示,截至今天下午5時,共18座水庫正洩洪、溢流或調節性放水;一級<<淹水>>警戒區域也從11日發布時的4個縣市,增至9個縣市。"}, // {"rank":2,"score":1,"hit_field":"大雨灌進低底盤公車 乘客傻眼\r\n暴雨襲台,全台災情不斷,現在就連行駛中的公車也遭殃,早上7點多時,一輛從三峽開往新埔捷運站的802公車,因為底盤低,經過<<淹水>>路段時,大雨直接灌進公車裡,車上乘客全嚇傻了,就像在坐船一樣,相當誇張。"}] // } String jsonResult = repo.Search("淹水", 0, 3).ToJson(); Console.WriteLine(jsonResult); // 2.2 Search, returned by object format SearchResult result = repo.Search("淹水", 0, 1); // 2.3 Print out the search result. Console.WriteLine("Matches: " + result.Matches); Console.WriteLine("Search Time: " + result.SearchTime); Console.WriteLine("=============================="); foreach (var aDoc in result.Results) { Console.WriteLine("Rank: " + aDoc.Rank); Console.WriteLine("Score: " + aDoc.Score); Console.WriteLine("Content: " + aDoc.HitField); Console.WriteLine("=============================="); } Console.ReadLine(); }
static List<SourceDocument> CreateSrcDoc() { List<SourceDocument> srcDocs = new List<SourceDocument>(); SourceDocument aSrcDoc = null; foreach (String aSrcFile in Directory.EnumerateFiles(@"D:\Projects\MongoSearch\Source")) { aSrcDoc = new SourceDocument(); String rawContent = File.ReadAllText(aSrcFile); String[] paras = rawContent.Split(new String[] { "\r\n", "\n" }, StringSplitOptions.RemoveEmptyEntries); aSrcDoc.FullText["title"] = paras[0]; aSrcDoc.FullText["content"] = String.Join("\n", paras.Skip(1).Take(paras.Count() - 1)); srcDocs.Add(aSrcDoc); } return srcDocs; }
/// <summary> /// 加入單一文件,建索引 /// </summary> /// <param name="srcDoc"></param> /// <returns></returns> public Boolean AddDocument(SourceDocument srcDoc) { this._bufferedSrcDocs.Add(srcDoc); return true; }