/// <summary> /// 保存索引 /// </summary> /// <param name="storeIndex"></param> /// <param name="words"></param> protected virtual void InsertWords(StoreIndexInfo storeIndex, IList <WordInfo> words) { foreach (var word in words) { Worder.Insert(storeIndex, word); } }
/// <summary> /// 开始索引 /// </summary> /// <param name="name"></param> public virtual void Begin(string name) { if (!StoreIndexs.ContainsKey(name)) { return; } var storeIndex = StoreIndexs[name]; if (storeIndex == null) { return; } Worder.Load(storeIndex); }
/// <summary> /// 删除索引 /// </summary> /// <param name="name"></param> public virtual void Delete(string name) { if (!StoreIndexs.ContainsKey(name)) { return; } var storeIndex = StoreIndexs[name]; if (storeIndex == null) { return; } Worder.Clear(storeIndex); Documentor.Clear(storeIndex); }
/// <summary> /// 得到结果 /// </summary> /// <param name="searchQuery"></param> /// <returns></returns> protected virtual SearchResultInfo GetSearchResultByFind(SearchQueryInfo searchQuery) { var result = new SearchResultInfo { Terms = Analyzer.Resolve(searchQuery.Key) }; if (result.Terms == null) { return(result); } if (!StoreIndexs.ContainsKey(searchQuery.Name)) { return(result); } var storeIndex = StoreIndexs[searchQuery.Name]; if (storeIndex == null) { return(result); } result.Feilds = storeIndex.StoreFields.Select(it => it.Name).ToList(); result.Words = new List <WordInfo>(); foreach (var term in result.Terms) { if (result.Words.Count(it => it.Name == term.Name) > 0) { continue; } var word = Worder.GetInfo(storeIndex, term.Name); if (word != null) { result.Words.Add(word); } } var documentIds = GetSearchDocumentIds(storeIndex, result, searchQuery); if (documentIds != null) { result.DocumentCount = documentIds.Count; AddSearchDocuments(storeIndex, searchQuery, result, documentIds); } if (result.Words.Count > 0) { result.DataCount = result.Words.Sum(it => it.DocumentCount) / result.Words.Count; } return(result); }
/// <summary> /// 删除词典 /// </summary> /// <param name="name"></param> /// <param name="terms"></param> public virtual bool DeleteWords(string name, IList <TermInfo> terms) { if (!StoreIndexs.ContainsKey(name)) { return(false); } var storeIndex = StoreIndexs[name]; if (storeIndex == null) { return(false); } foreach (var term in terms) { Worder.Remove(storeIndex, term.Name); } return(true); }
public void Initialize() { this.Worder = new Worder(); }