1、lucene是apache下的一個開源框架,主要使用于處理大量資源全文搜索的時間使用的工具。從其官方網站定義為:Apache的Lucene的是一種基于java語言開發的、高性能、跨平臺、幾乎適用于任何程序的全文搜索引擎。并且apache的Lucenea是完全開源的。當前最新版本是2.4.1。
下邊我們首先看一個簡單的Lucene的例子。
package com.ikdy.yeming;
import net.paoding.analysis.analyzer.PaodingAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.document.Field;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.index.IndexWriter;
import org.apache.lucene.queryParser.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocCollector;
public class IndexFileTest {
public static final String INDEX_FILE_PATH = "D:/web/indexFile";
public static void main(String[] args) throws Exception{
IndexWriter write = new IndexWriter(INDEX_FILE_PATH,new PaodingAnalyzer(),true,IndexWriter.MaxFieldLength.LIMITED);
write.setUseCompoundFile(false);
Document doc = new Document();
Document doc1 = new Document();
Document doc2 = new Document();
Document doc3 = new Document();
Document doc4 = new Document();
Document doc5 = new Document();
Document doc6 = new Document();
Document doc7 = new Document();
Document doc8 = new Document();
Field file = new Field("bookname"," 本報感城3月25日電 (記者梁振君 特約記者卞王玉玨)東方市感城鎮“3·23”事件今天出現反彈。中午11時半,該鎮感城村和寶上村村民各500人左右分別聚集在感恩橋附近,約1小時后雙方發生小規模沖突,當場造成3名村民不同程度受傷,其中1名傷者送往醫院搶救無效死亡,死者為寶上村村民。當地許多村民痛心地表示,大家同居一地同飲一江水,應該和睦相處。希望雙方立即停止對彼此的傷害,不再讓悲劇繼續發生。",Field.Store.YES,Field.Index.ANALYZED);
Field file1 = new Field("bookname","從昨天凌晨1時許直至今天中午11時許,經過東方市委、市政府及省公安廳、邊防總隊等各方努力,感城鎮的秩序已趨穩定,事態基本平息。今天上午10時許,海南日報記者驅車來到感城鎮政府所在地和感城村,一路上看到載客中巴車、三輪摩托車暢行無阻,鎮上的店鋪照常開門營業,當地群眾坐在道路兩側喝茶閑聊。",Field.Store.YES,Field.Index.ANALYZED);
Field file2= new Field("bookname","中午11時半左右,一輛感城村的私人小貨車在寶上村出口處被該村部分村民攔截并燒毀,由此引發寶上村和感城村重新發生對峙,并造成沖突。幸虧警方及時處置,使得沖突沒有擴大化。截至今晚10時許,局面初步得到控制,聚集村民均已散去,警方仍在兩村之間巡防",Field.Store.YES,Field.Index.ANALYZED);
Field file3 = new Field("bookname","“3·23”事件發生后,省委、省政府高度重視,省委書記衛留成、省長羅保銘分別作出重要批示。省委常委、政法委書記肖若海今天下午趕到感城鎮現場指揮。事件發生以來,東方市委書記王河山、市長譚燈耀一直堅持在一線指揮,積極會同有關各方想方設法開展穩控工作平息事態。",Field.Store.YES,Field.Index.ANALYZED);
Field file4 = new Field("bookname","針對事件發展態勢,省委政法委、省公安廳、東方市等有關各方在繼續組織大批干部進村入戶做好涉事村莊村民的思想教育工作,同時采取多種手段對村民開展法制宣傳;積極做好死者家屬善后工作,并要求醫院全力搶救傷者;加大案件偵破力度,同時組織警力做好必要的防控工作。",Field.Store.YES,Field.Index.ANALYZED);
Field file5 = new Field("bookname","事件發生后,焦作市委專門召開會議,成立調查組對媒體反映的情況進行了全面調查。根據調查結果,焦作市委、市政府嚴肅處理了相關責任人,并要求暢通渠道,廣開言路,接受群眾監督,堅持為民創建,科學創建,繼續深入開展創建國家衛生城市活動。鑒于此事件已對全國創建衛生城市工作造成不良影響,為保證創建國家衛生城市工作的公正性和嚴肅性,全國愛衛辦決定",Field.Store.YES,Field.Index.ANALYZED);
Field file6 = new Field("bookname","來到柜臺后,“白夾克”聲稱準備結婚,提出要買一枚1克拉的鉆戒。眼看來了大顧客,營業員耐心地為兩人挑選鉆石。兩人先是選中一款11萬元的鉆戒,隨后“白夾克”又看中旁邊一顆標價為33萬元的裸鉆。",Field.Store.YES,Field.Index.ANALYZED);
Field file7 = new Field("bookname","“黑西裝”直奔克拉廳的柜臺前,稱要買之前看中的33萬元的裸鉆。得知是前一天預約的顧客后,營業員頓時興高采烈地拿出了裸鉆。“黑西裝”取出了自帶的放大鏡,還拿出了一個鑷子,仔細觀察鉆石的成色。大約10分鐘后,“黑西裝”查看結束,將裸鉆還給營業員,表示十分滿意,提出1小時后來取貨。在“黑西裝”查看裸鉆的時候,“白夾克”并未湊過來,而是在旁邊挑選其他飾品。",Field.Store.YES,Field.Index.ANALYZED);
Field file8 = new Field("bookname","24日早晨,民警追查到,這3人目前正住在閔行區金匯路頤美庭園酒店內。當天下午3點半左右,民警在306房間內將“黑西裝”李銀林和“白夾克”萬堯榮等3人抓獲。此時距離鉆石被盜僅24個小時。經審問,李銀林在拿鑷子查看裸鉆時,曾利用營業員低頭的一剎那,伸手摸了摸自己的褲子口袋———短短幾秒鐘的時間,他便完成了調包。",Field.Store.YES,Field.Index.ANALYZED);
doc.add(file);
doc1.add(file1);
doc2.add(file2);
doc3.add(file3);
doc4.add(file4);
doc5.add(file5);
doc6.add(file6);
doc7.add(file7);
doc8.add(file8);
write.addDocument(doc);
write.addDocument(doc1);
write.addDocument(doc2);
write.addDocument(doc3);
write.addDocument(doc4);
write.addDocument(doc5);
write.addDocument(doc6);
write.addDocument(doc7);
write.addDocument(doc8);
write.close();
try {
IndexReader reader = IndexReader.open(INDEX_FILE_PATH);
IndexSearcher search = new IndexSearcher(reader);
QueryParser parser = new QueryParser("bookname", new PaodingAnalyzer());
Query query =parser.parse("“黑西裝”");
TopDocCollector collector = new TopDocCollector(10);
search.search(query,collector);
ScoreDoc[] hits = collector.topDocs().scoreDocs;
int numTotalHits = collector.getTotalHits();
System.out.println("所有的暫時:"+numTotalHits);
//int start=1;
// int sEnd=3;
for(int i=0;i<numTotalHits;i++){
doc = search.doc(hits[i].doc);
System.out.println(doc);
}
/*Hits hit = search.search(query);
for(int i=0;i<hit.length();i++){
System.out.println(hit.doc(i));
}*/
} catch (Exception e) {
e.printStackTrace();
}
}
}
所有的暫時:2
Document<stored/uncompressed,indexed,tokenized<bookname:“黑西裝”直奔克拉廳的柜臺前,稱要買之前看中的33萬元的裸鉆。得知是前一天預約的顧客后,營業員頓時興高采烈地拿出了裸鉆。“黑西裝”取出了自帶的放大鏡,還拿出了一個鑷子,仔細觀察鉆石的成色。大約10分鐘后,“黑西裝”查看結束,將裸鉆還給營業員,表示十分滿意,提出1小時后來取貨。在“黑西裝”查看裸鉆的時候,“白夾克”并未湊過來,而是在旁邊挑選其他飾品。>>
Document<stored/uncompressed,indexed,tokenized<bookname:24日早晨,民警追查到,這3人目前正住在閔行區金匯路頤美庭園酒店內。當天下午3點半左右,民警在306房間內將“黑西裝”李銀林和“白夾克”萬堯榮等3人抓獲。此時距離鉆石被盜僅24個小時。經審問,李銀林在拿鑷子查看裸鉆時,曾利用營業員低頭的一剎那,伸手摸了摸自己的褲子口袋———短短幾秒鐘的時間,他便完成了調包。>>
注釋:本文使用的中文分詞:庖丁解牛(我將在下一篇日志中去分析)