安徽新华电脑专修学院_安徽电脑培训_安徽电脑培训学校_合肥电脑培训

當前位置:首頁 > 網站舊欄目 > 學習園地 > 設計軟件教程 > Lucene(Lucence)建立索引(字段)

Lucene(Lucence)建立索引(字段)
2010-01-13 23:09:43  作者:  來源:
   Lucene,這是官方稱謂,也有許多人叫它Lucence,做搜索和分詞用的工具包.也有人說是Java下的搜索引擎框架庫,見仁見智的說法罷了.不管叫什么,確實非常有用,比如做全站的搜索,其實它的用處遠大于此,但凡涉及到文本搜索的地方就能用到它.我們就以做全站搜索為例,演示一下如何應用Lucene建立索引.
Java代碼 復制代碼
  1. public void index(List<IArticle> list)   
  2. {   
  3.   //IArticle接口提供getName(標題)和getContent(內容)   
  4.   //list就是從數據庫里查詢出來的要建立索引的對象的列表   
  5.   if(list != null && list.size() > 0)   
  6.   {   
  7.     try {   
  8.            //標記是否重新建立索引,true為重新建立索引   
  9.            boolean flag = true;   
  10.            //如果已存在索引,則追加索引   
  11.            if(IndexReader.indexExists(path))   
  12.       {   
  13.          flag = false;   
  14.            }   
  15.       ChineseAnalyzer ca = new ChineseAnalyzer();   
  16.       IndexWriter indexWriter = new IndexWriter("c:/lucene/index",ca,flag);            
  17.       Document doc = null;   
  18.       for(int i=0;i<list.size();i++)   
  19.           {   
  20.         doc = new Document();   
  21.         doc.add(new Field("title",article.getName(),Field.Store.YES,Field.Index.TOKENIZED));   
  22.        //添加內容屬性,內容只索引,不存儲   
  23.        doc.add(new Field("content",new StringReader(list.get(i).getContent())));   
  24.        indexWriter.addDocument(doc);   
  25.       }   
  26.            //優化并關閉   
  27.       indexWriter.optimize();   
  28.       indexWriter.close();   
  29.        } catch (Exception e)    
  30.        {   
  31.       // TODO 自動生成 catch 塊   
  32.       //e.printStackTrace();   
  33.        }   
  34.   }   
  35. }  

簡單說下需要注意的地方:
1.ChineseAnalyzer ca = new ChineseAnalyzer();這個是分析器,Lucene內置多個,處理中文搜索我會用ChineseAnalyzer.
2.IndexWriter indexWriter = new IndexWriter(c:/lucene/index,ca,true);處理索引的類,注意其構造方法里的最后一個參數,如果為true則表示,下次建立索引時會清除這次建立的索引重新建立索引,如果為false則表示追加索引,在原來索引的基礎上追加.看實際情況定true或false.
3.doc.add(new Field("title",article.getName(),Field.Store.YES,Field.Index.TOKENIZED));這一句表示為文章標題建立索引并存儲.
4.doc.add(new Field("content",new StringReader(list.get(i).getContent())));這句是為內容建立索引但不存儲
   這樣我們就為文章對象建立好索引了,然后就可以利用Lucene的其他類對這個索引目錄進行搜索了,關于搜索部分我們稍后再補充上.
   下面是搜索部分的代碼,寫的簡陋了點,比較簡單,不再多說,請參看注釋:
Java代碼 復制代碼
  1. public class Search   
  2. {   
  3.   //定義一個索引搜索類對象   
  4.   private IndexSearcher searcher = null;   
  5.   //定義一個Query對象   
  6.   private Query query = null;   
  7.   //定義中文分析器   
  8.   ChineseAnalyzer analyzer = new ChineseAnalyzer();   
  9.   //構造方法里完成searcher的實例化   
  10.   public Search()   
  11.   {   
  12.     try  
  13.     {   
  14.      //這里的參數就是上面我們生成索引的目錄   
  15.      searcher = new IndexSearcher(IndexReader.open("c:/lucene/index"));   
  16.     }catch(Exception e)   
  17.     {   
  18.       e.printStackTrace();   
  19.     }   
  20.   }   
  21.   public Hits search(String keyword) throws Exception   
  22.   {   
  23.     //開始搜索的時間   
  24.     Date start = new Date();   
  25.     //對我們索引的content字段進行搜索   
  26.     QueryParser qp = new QueryParser("content",analyzer);   
  27.     this.query = qp.parse(keyword);   
  28.     Hits hits = this.searcher.search(query);   
  29.     Date end = new Date();   
  30.     System.out.println("檢索完成,用時"+(end.getTime()-start.getTime())+"毫秒");   
  31.     //////////打印測試////////   
  32.     if(hits != null && hits.length() > 0)   
  33.     {   
  34.       for(int i = 0; i < hits.length(); i++)   
  35.       {   
  36.         try  
  37.         {   
  38.           Document doc = hits.doc(i);   
  39.           System.out.println("結果"+(i+1)+":"+doc.get("title")+" createTime:"+doc.get("content"));    
  40.           //System.out.println(doc.get("path"));   
  41.         }catch(Exception e)   
  42.         {   
  43.           e.printStackTrace();   
  44.         }   
  45.       }   
  46.     }   
  47.     return hits;   
  48.   }   
  49.   ///調用,主方法   
  50.   public static void main(String[] args)   
  51.   {   
  52.     try    
  53.     {   
  54.       Search test = new Search();   
  55.       Hits h = test.search("你好");   
  56.     } catch (Exception e)    
  57.     {   
  58.       // TODO 自動生成 catch 塊   
  59.        e.printStackTrace();   
  60.     }   
  61.   }   
  62. }  

安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢
主站蜘蛛池模板: 网上配音_免费配音_广告专题配音_网络录音网站【海豚配音】 | 膜结构车棚厂家-张拉膜景观棚-汽车充电桩停车棚-嘉兴铭邦膜结构公司 | 新2025澳门天天开好彩生肖对照表,2025新澳精准正版免费,2025新澳今晚开奖资料大全,新澳门四肖期期准免费,新澳门今晚9点30分开奖结果 | 环链电动葫芦_钢丝绳电动葫芦_电动葫芦厂家_上海沪工起重机械有限公司 | 金属网帘|金属帘|装饰网帘|金属环网|金属幕墙网|金属垂帘|金属扣帘-安平县名图金属丝网制品有限公司 | 青岛除甲醛公司|青岛甲醛治理|青岛除甲醛|甲醛检测|光触媒除甲醛|装修除味除甲醛|新房除甲醛|青岛室内环境污染检测治理|青岛闪洁环保科技有限公司官网 | 廊坊微信营销,廊坊小程序开发,廊坊APP开发(安卓_苹果ios开发),微信朋友圈广告,百度推广,廊坊网络公司品牌服务商-河北盛秋网络科技有限公司 | 深圳市泰美乐纸制品有限公司-纸杯厂,一次性纸杯,广告纸杯,奶茶纸杯,试饮纸杯定做 | 山西档案架,智能档案密集架,手摇密集架,山西密集架厂家批发/报价 | 搅拌设备_搅拌器_浓密机_浆式_顶入式_不锈钢「赛鼎机械」 | 四川川亚电子科技有限公司 | 上海松韬自动化设备有限公司,致力于高压清洗及工业自动化制造 | 纸箱包装,济南纸箱,济南包装盒-济南佳琦包装有限公司 | 上海钧尚电器有限公司 - Faulhaber电机 AMETEK pittman电机 AMETEK ROTRON军用航空风机 Exlar电动缸 MAE电机 MCG电机 CP电动工具 马头工具 AMCI驱动器 直流电机 减速箱 直流伺服电机,无刷电机,直线电机 直流防爆电机 防爆电机 汽车助力转向电机 EPS电机 faulhaber motor faulhaber gearbox NANOTEC电机 ELWOOD电机 PHYTRON电机 EXLAR伺服电动缸 高力矩、高性能直流电机,音圈电机,风机,直流风机,航空风机 | 模具|晒纹-咬花-拉丝纹-立体纹-东莞市佳毅激光科技有限公司 | 暖家乐散热器_天津市暖家乐金属制品有限公司 | 小型生活污水处理设备_MBR膜生物反应器_口腔医院/脱脂污水处理设备_酸洗磷化/喷涂废水处理设备-上海台江环保 | 陕西筱润智能科技有限公司 干部人事智能档案柜 智能密集架 智能档案柜 部队选层文件智能柜 智能枪弹柜 财务智能档案柜 边防武警智能密集架 医院智能档案柜 部队选层文件智能柜智能枪弹柜 学校医院文件柜 企事业单位公检法智能文件柜 生产厂家-筱润智能科技有限公司 RFID射频智能密集架 全自动智能选层档案柜 智能密保柜 枪柜部队营房营具床桌椅办公家具 办公用品档案盒设备货架 全自动智能选层柜生产厂家-筱润智能科技有限公司 | 兰舍硅藻泥 -- 深圳硅藻泥|深圳兰舍硅藻泥|深圳硅藻泥品牌|深圳硅藻泥价格|深圳硅藻泥厂家|深圳硅藻泥施工| | 净水器厂家_杭州净水器厂家_杭州拥政科技有限公司 | 河北新鑫矿冶设备有限公司-河北新鑫矿冶设备有限公司 | 宁波允泰仪器有限公司-硬度计、拉力试验机、盐雾试验箱、影像测量仪、气动量仪 | 青州市科信水处理设备有限公司-ic卡水处理设备厂家-畜牧养殖水处理设备 | 智能门锁管理-公寓管理软件-智能水电表管理系统-深圳安安智能 | 西安西雷脉冲功率技术有限公司-高压调制器/加速器与脉冲功率系统的研发/生产/应用推广/高压脉冲电源的应用研究/设计/生产和销售/高功率脉冲器件/材料与仪器设备的研发/生产和销售/高电压/大电流/强磁场环境的模拟及测试服务/会议会展服务/货物及进出口的业务/脉冲功率技术领域类的技术转让 | 家电|想认识品茶妹子?这份攻略手把手教你 | 威海华东数控股份有限公司 | 青岛除甲醛公司|青岛甲醛治理|青岛除甲醛|甲醛检测|光触媒除甲醛|装修除味除甲醛|新房除甲醛|青岛室内环境污染检测治理|青岛闪洁环保科技有限公司官网 | 润东方环保空调厂家-水冷式空调价格-润东方水冷空调-东莞市科骏机电设备有限公司 | 惠州清洁公司|惠州保洁公司|惠州清洁|惠州保洁|惠州清洁服务|惠州保洁服务|壹壹集团 | 沈阳机电一体化电热锅炉_沈阳蓄热式电锅炉_沈阳壁挂式电锅炉【沈阳远鹏电热供水设备工程安装有限公司】 | 全自动拆包机,自动拆包机,全自动逐层拆包机,全自动吨袋拆包机,吨袋拆包机,管链输送机,气流分级机 | 游戏加速器-极迅互联加速器-更快更稳的网游手游免费加速器 | 河北新鑫矿冶设备有限公司-河北新鑫矿冶设备有限公司 | 仪器仪表维修_示波器维修_进口分析仪维修_热像仪维修_上海仰光电子仪器仪表维修部 | 湖南净声源环保科技有限公司是一家专业从事噪声治理和建筑声学设计生态环境综合治理服务的企业,专业从事株洲电梯隔音治理,湘潭中央空调降噪处理,衡阳邵阳冷却塔噪音治理,岳阳常德大型风机噪声隔音降噪,张家界空压机噪声治理,益阳配电房变压器噪声治理,专业郴州永州工厂企业车间噪声治理,怀化娄底专业机械设备减振降治理,武汉噪音治理隔音降噪公司,孝感噪音治理,立式球磨机的噪声控制,专业隔音降噪公司,、以及各类机械动力设备减振降噪噪声治理的公司,同时为客户提供咨询与解决方案 | 真空电镀机_镀膜机厂家_离子镀膜机_磁控溅射镀膜设备_镀钛设备-江苏驰诚科技发展有限公司 | 联想南京总代理-联想服务器|联想电脑笔记本代理商|联想工作站|dell服务器|HP服务器|南京IBM代理商|IBM V5000存储总包销-南京宇宽科技有限公司 | 铁行火车票_铁行火车票网上订票_铁行火车票客户端【铁行官网】 | 铝型材定制_东莞铝型材_散热器铝型材_工业铝合金型材挤压加工生产厂家价格-中亚铝业 | 智能锁十大品牌_指纹锁_智能锁加盟_开换锁-锁当家【官网】 |