中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

我心(xin)中的核心(xin)組(zu)件(可(ke)插拔的AOP)~第十四回 全文檢索(suo)架構~終于設計了一個自(zi)己(ji)滿意的Lucene架構

回到目錄

我(wo)架構的(de)以lucene為(wei)(wei)技術的(de)全文(wen)(wen)檢索(suo)分為(wei)(wei)lucene檢索(suo)模塊,索(suo)引文(wen)(wen)件生成器和WEB檢索(suo)測試三個部分組(zu)成

結構如下:

image

lucene模(mo)塊它由(you)通過(guo)檢索項和(he)幾個(ge)具體(ti)檢索業務子項目組成(cheng)

通過功能(neng)項目(mu)結構為:

image

其中的一個子項目結構為

image

子項目只(zhi)負責自己業務的實現,createIndexFile這個類型(xing)主要實現的是(shi)建立索引,而(er)FieldKeys類型(xing)主要是(shi)設置(zhi)表字段(duan)

在WEB層測試時可以通(tong)過這段(duan)代碼(ma)進行調(diao)用(yong)


public class HomeController : ControllerBase
   {
       Web.Helper.UIHelper ui;

       public ActionResult Index(string keyword, string categoryName, int? page)
       {
           string _keyword = (keyword ?? string.Empty).Trim();
           System.Collections.Specialized.NameValueCollection nv = new System.Collections.Specialized.NameValueCollection();
           nv.Add("keyword", _keyword);
           ui = new Web.Helper.UIHelper(Request.Url.ToString(), nv);
           ViewData["Message"] = "歡?迎-使1用? ASP.NET MVC!";
           SearchResult result = GetDataFromIndex(new QueryTerm { KeyWord = _keyword, CategoryName = categoryName, PageSize = 1 });
           ViewData["result"] = result;
           ViewData["page"] = ui.GetPage(page ?? 1, 10, result.Total);
           return View();
       }

而從(cong)索引文件(jian)反(fan)序列化的代碼被我抽象(xiang)到controller的基類中(zhong),如下

  
public class ControllerBase : Controller
    {
        /// <summary>
        /// 調÷用?WIN API方?法¨
        /// 非?托D管ü資ê源′
        /// </summary>
        /// <param name="section"></param>
        /// <param name="key"></param>
        /// <param name="def"></param>
        /// <param name="retVal"></param>
        /// <param name="size"></param>
        /// <param name="filePath"></param>
        /// <returns></returns>
        [DllImport("kernel32")]
        private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath);

        /// <summary>
        /// 得?到?索(suo)÷引y文?件t路·徑?
        /// </summary>
        /// <param name="configPath"></param>
        /// <returns></returns>
        protected string GetIndexPath(string configPath)
        {
            StringBuilder sbPath = new StringBuilder(500);
            GetPrivateProfileString("Index", "Path", "", sbPath, 500, configPath);

            return sbPath.ToString();
        }

        /// <summary>
        /// 從(cong)ó索÷引y文?件t中D重?到?數y據Y,?根ù據Y關(guan)?鍵ü字?
        /// </summary>
        /// <param name="keyword"></param>
        /// <returns></returns>
        protected virtual SearchResult GetDataFromIndex(QueryTerm queryTerm)
        {
            QueryTerm term = new QueryTerm();
            term.KeyWord = queryTerm.KeyWord;
            term.PageIndex = queryTerm.PageSize;
            term.CategoryName = queryTerm.CategoryName;
            term.PageSize = 10;
             Search searcher = new Search(this.GetIndexPath(ConfigurationManager.AppSettings["Res_Item_IndexDocumentsPath"]), term);
            return searcher.GetSearchResult();
        }
    }
}

 回到目錄

 
posted @ 2012-02-18 23:38  張占嶺  閱讀(1792)  評論(3)    收藏  舉報