Lucene入門以及簡單例項

2021-05-26 22:29:32 字數 3398 閱讀 7453

其實,lucene是乙個很容易上手的搜尋引擎框架,傳統的搜尋引擎,涉及到爬蟲,也就是爬取網

頁,然後對網頁進行加工,也就是索引,最後用於搜 索,lucene這個框架可以很方便的幫你做

法,包括分 詞、索引、搜尋不同的目錄、搜尋不同的域,希望大家通過這個例項,對lucene和

搜尋引擎能有比較全面的認識!

lucene的使用,簡單來說可以劃分為兩種型別,一是建立索引,二是搜尋內容。

一、建立索引的五個基礎類 document, field, indexwriter, analyzer, directory

1、document類:用來描述文件,這裡的文件可以指乙個html頁面,一封電子郵件,或者是一

個文字檔案。乙個 document 物件由多個field物件組成的。可以把乙個document物件想象成數

據庫中的乙個記錄,而每個field物件就是記錄的乙個字段。

2、field類:用來描述乙個文件的某個屬性,比如一封電子郵件的標題和內容可以用兩個field對

象分別描述。

3、analyzer類:用來對文件內容進行分詞處理,analyzer 類是乙個抽象類,它有多個實現,針

對不同的語言和應用需要選擇適合的analyzer,analyzer會把分詞後的內容交給indexwriter來建

立索引。

4、indexwriter類:用來建立索引的乙個核心類,作用是把乙個個的document物件加到索引中

來。5、directory 類:表示索引檔案儲存位置的抽象類。有兩個常用的子類:

* fsdirectory — 在實際檔案系統中儲存索引的 directory 實現。該類對於大型索引非常有用

。* ramdirectory — 在記憶體中儲存所有索引的實現。該類適用於較小的索引,可以完整載入到

記憶體中,在應用程式終止之後銷毀。由於索引儲存在記憶體中,所以速度相對較快。

二、搜尋內容的四個基礎類:searche、term、query和topdocs   

1、searcher 是乙個抽象基類,包含各種超負荷搜尋方法。indexsearcher 是乙個常用的子類,

允許在給定的目錄中儲存搜尋索引。search 方法返回乙個根據計算分數排序的文件集合。

lucene 為每個匹配給定查詢的文件計算分數。indexsearcher 是執行緒安全的;乙個例項可以供多

個執行緒併發使用。

2、term 是搜尋的基本單位。它由兩部分組成:單詞文字和出現該文字的字段的名稱。term 對

象也涉及索引編制,但是可以在 lucene 內部建立。

3、query 和子類

query 是乙個用於查詢的抽象基類。搜尋指定單詞或片語涉及到在項中包裝它們,將項新增到查

詢物件,將查詢物件傳遞到 indexsearcher 的搜尋方法。

lucene中支援模糊查詢,語義查詢,短語查詢,組合查詢等等,如有termquery,booleanquery,rangequery,wildcardquery等一些類。

queryparser: 是乙個解析使用者輸入的工具,可以通過掃瞄使用者輸入的字串,生成query物件

lucene 包含各種型別的具體查詢實現,比如 termquery、booleanquery、phrasequery、

prefixquery、rangequery、 multitermquery、filteredquery、spanquery 等。以下部分討論

lucene 查詢 api 的主查詢類。

4、topdocs    封裝搜尋結果以及 scoredoc 的總數

乙個最簡單的lucene例子,展示lucene中重要的幾個類indexwriter、directory、analyzer、

document、field、indexsearcher、term、query、termquery、topdocs的簡單用法。

package com.test;

import org.apache.lucene.analysis.standard.standardanalyzer;

import org.apache.lucene.document.document;

import org.apache.lucene.document.field;

import org.apache.lucene.index.indexwriter;

import org.apache.lucene.queryparser.multifieldqueryparser;

import org.apache.lucene.search.booleanclause;

import org.apache.lucene.search.hits;

import org.apache.lucene.search.indexsearcher;

import org.apache.lucene.search.multisearcher;

import org.apache.lucene.search.query;

/*** 這個例項包含了lucene所有核心用法

* * @author panhuizi

* */

public class lucenetest catch (exception e)

system.out.println("ok");

}public void index() throws exception

public void search(string serchstring) throws exception ;

/* 我們需要搜尋兩個域"articletitle", "articletext"裡面的內容 */

string fields = ;

/* 下面這個表示要同時搜尋這兩個域,而且只要乙個域裡面有滿足我們搜

索的內容就行 */

booleanclause.occur clauses = ;

/** multifieldqueryparser表示多個域解析,

* 同時可以解析含空格的字串,如果我們搜尋"中國 金牌",根據前面的

索引,顯然搜到的是第二份檔案

*/query query = multifieldqueryparser.parse(serchstring, fields, clauses,

new standardanalyzer());

/* multisearcher表示多目錄搜尋,在這裡我們只有乙個目錄 */

multisearcher searcher = new multisearcher(indexsearchers);

/* 開始搜尋 */

hits h = searcher.search(query);

/* 把搜尋出來的所有檔案列印出來 */

for (int i = 0; i < h.length(); i++)

/* 關閉 */

searcher.close();}}

lucene 入門 開發例項

自己在網上學習 lucene 經測試後.發布到自己的部落格上來 開發之間一定要有 lucene包 哦 然後看下子語法 indexwriter lucene中最重要的的類之一,它主要是用來將文件加入索引,同時控制索引過程中的一些引數使用。analyzer 分析器,主要用於分析搜尋引擎遇到的各種文字。常...

學習lucene應用簡單例項

1.搭建開發環境 lucene analyzers 3.0.1.jar lucene core 3.0.1.jar lucene highlighter 3.0.1.jar lucene memory 3.0.1.jar ikanalyzer3.2.0stable.jar 修補包 說明 本ik分詞器...

Lucene入門操作 簡單的CRUD

lucene是乙個非常優秀的開源的全文搜尋引擎 架構 我們可以在它的上面開發出各種全文搜尋的應用來。直接上 建立索引庫 public void testcreateindex throws exception 第五步 關閉indexwriter物件。indexwriter.close 獲得index...