lucene的搜尋原理:在進行搜尋之前,我們只要新增資料,就會對資料進行分詞,並把分詞後的資料和資料對應的id儲存到索引庫中,我們進行查詢的時候,不會根據某個欄位的值直接去查資料庫(因為可能資料量很龐大,或者資料庫在進行模糊匹配的時候資料庫索引會失效,很消耗效能),而是先去索引庫中查詢獲取到id,然後再去資料庫中去查詢
下面我這裡演示下lucene中一些常用的api的使用吧(本案例採用lucene4.x系列的版本)
1.建立索引:使用ik分詞器,還需要匯入兩個配置檔案
//演示使用ik分詞器後的效果
@test
public void buildindex() throws ioexception
下面是建立索引比較完整的乙個例子:
@test
public void completebuildluceneindex() throws ioexception
2.a查詢索引(也可以認為是對長詞進行分詞查詢):
//簡單長詞模糊查詢
@test
public void testqueryparse() throws parseexception, ioexception
查詢索引小加強版本(加強在哪?加強在多列查詢上,上述**只是單列查詢,查詢的只是content這個字段)
@test
public void queryindex2() throws parseexception, ioexception , new ikanalyzer());
query query = multifieldqueryparser.parse("谷歌");//開始解析要查詢的值
//建立索引搜尋物件,並制定索引庫的位置
indexsearcher indexsearcher = new indexsearcher(directoryreader.open(fsdirectory.open(new file("e:/tmp"))));
//開始查詢
topdocs topdocs = indexsearcher.search(query, integer.max_value);
system.out.println("命中數量"+topdocs.totalhits);
scoredoc scoredocs = topdocs.scoredocs;
for (scoredoc scoredoc :
scoredocs)
}
其他還有一些查詢:詞條查詢、模糊搜尋、相似度搜尋、組合查詢,下面依依演示一遍
2.b.詞條查詢
//測試詞條查詢(測試termquery),不需要再去構建查詢解析器物件
@test
public void testtermquery() throws ioexception
}
2.c.模糊搜尋
//測試模糊搜尋(也可以叫做短詞模糊匹配,使用wildcardquery)
@test
public void testwildcardquery() throws ioexception
}
2.d.相似度搜尋(場景:就例如我們有時候想搜'百科全書'寫成'擺科全輸',依舊有時候能搜到我們需要的結果)
@test
public void testfuzzquery() throws ioexception
}
2.e查詢索引庫所有內容
@test
public void queryallfromindex() throws ioexception
}
2.f組合查詢(可以做到將上述幾個查詢進行合併,嗯,比較實用)
//測試組合查詢(這裡演示將queryparse和wildcardparse進行合併)
@test
public void testbooleanquery() throws parseexception, ioexception
}
3.更新索引庫中的索引資料
//更新索引庫中的索引
@test
public void updateindexdata() throws ioexception
4.刪除索引
//刪除索引庫中的指定資料
@test
public void deleteindexdata() throws ioexception
好了,以上就是lucene的基本操作,後面我會更新一篇高階點的部落格。 Lucene的入門例子
1.lucene的基本步驟 配 與jar包版本 2.示例的 3.完成示例後再該延伸到哪些知識 jar包版本 一 從資料庫中查資料 爬資料 1 public arraylistgetdate string sql throws sqlexception 把資料庫裡的資料取出來 return item ...
lucene的實戰入門
最近在寫個人部落格專案.有個需求.就是要求在前端頁面上有乙個搜尋框,使用者可以根據這個搜尋框對所有部落格進行全文檢索,包括標題和正文,然後根據搜尋匹配度進行排序展示出來,並且要有高亮顯示,類似如下效果 全文檢索的這個功能可以採用lucene這個框架實現.lucene的具體原理到底是什麼呢?其實就是根...
lucene入門學習
我們生活中的資料總體分為兩種 結構化資料和非結構化資料 全文檢索 將非結構化資料中的一部分資訊提取出來,重新組織,使其變得有一定結構,然後對此有一定結構的資料進行搜尋,從而達到搜尋相對較快的目的。這部分從非結構化資料中提出的然後重新組織的資訊,我們稱之為索引。這種先建立索引,再對索引進行搜尋的過程就...