lucene搜尋方式(query型別)

2022-04-05 10:55:10 字數 2890 閱讀 2966

lucene有多種搜尋方式,可以根據需要選擇不同的方式。

1、詞條搜尋(單個關鍵字查詢)

主要物件是termquery

呼叫方式如下:

term term=new term(欄位名,搜尋關鍵字);

query query=new termquery(term);

hits hits=searcher.search(query);

2、組合搜尋(允許多個關鍵字組合搜尋)

主要物件是booleanquery

呼叫方式如下:

term term1=new term(欄位名,搜尋關鍵字);

termquery query1=new termquery(term1);

term term2=new term(欄位名,搜尋關鍵字);

termquery query2=new termquery(term2);

booleanquery booleanquery=new booleanquery();

booleanquery.add(query1,引數)

booleanquery.add(query2,引數)

hits hits=searcher.search(booleanquery);

此方法中的核心在booleanquery的add方法上,其第二個引數有三個可選值,對應著邏輯上的與或非關係

引數如下:

booleanclause.occur.must                必須包含,類似於邏輯運算的與

booleanclause.occur.must _not       必須不包含,類似於邏輯運算的非

booleanclause.occur.should           可以包含,類似於邏輯運算的或

這三者組合,妙用無窮。

3、範圍搜尋(允許搜尋指定範圍內的關鍵字結果)

主要物件是rangequery

呼叫方式如下:

term term1=new term(欄位名,起始值);

term term2=new term(欄位名,終止值);

rangequery rangequery=new rangequery(term1,term2,引數);

hits hits=searcher.search(rangequery);

此方法中的引數是boolean型別的,表示是否包含邊界 。

true 包含邊界

false不包含邊界

4、字首搜尋(搜尋起始位置符合要求的結果)

主要物件是prefixquery

呼叫方式如下:

term term=new term(欄位名,搜尋關鍵字);

prefixquery prefixquery=new prefixquery (term);

hits hits=searcher.search(prefixquery);

5、短語搜尋(根據零碎的短語組合成新的片語進行搜尋)

主要物件是phrasequery

呼叫方式如下:

term term1=new term(欄位名,搜尋關鍵字);

term term2=new term(欄位名,搜尋關鍵字);

phrasequery phrasequery=new phrasequery();

phrasequery.setslop(引數);

phrasequery.add(term1);

phrasequery.add(term2);

hits hits=searcher.search(phrasequery);

其中setslop的引數是設定兩個關鍵字之間允許間隔的最大值。

6、多短語搜尋(先指定乙個字首關鍵字,然後講其他的關鍵字加在此關鍵字之後,組成詞語進行搜尋)

主要物件是:multiphrasequery

呼叫方式如下:

term term=new term(欄位名,前置關鍵字);

term term1=new term(欄位名,搜尋關鍵字);

term term2=new term(欄位名,搜尋關鍵字);

multiphrasequery multiphrasequery=new multiphrasequery();

multiphrasequery.add(term);

multiphrasequery.add(new term);

hits hits=searcher.search(multiphrasequery);

7、模糊搜尋(顧名思義)

主要物件是:fuzzyquery

呼叫方式如下:

term term=new term(欄位名,搜尋關鍵字);

fuzzyquery fuzzyquery=new fuzzyquery (term,引數);

hits hits=searcher.search(fuzzyquery);

此中的引數是表示模糊度,是小於1的浮點小數,比如0.5f

8、萬用字元搜尋(顧名思義)

主要物件是:wildcardquery

呼叫方式如下:

term term=new term(欄位名,搜尋關鍵字+萬用字元);

wildcardquery wildcardquery=new wildcardquery (term);

hits hits=searcher.search(wildcardquery);

其中的萬用字元分兩種,即*和?

* 表示任意多的自負

?表示任意乙個字元

9、正規表示式搜尋(顧名思義)

主要物件是:regexquery

呼叫方式如下:www.2cto.com

lucene 搜尋種類很多。這裡就介紹幾個最常用的。其中termquery\booleanquery\regexquery功能最強大,最為常用。

作者:wyq_wzw

lucene搜尋方式(query型別)

出處 感謝作者 lucene有多種搜尋方式,可以根據需要選擇不同的方式。1 詞條搜尋 單個關鍵字查詢 主要物件是termquery 呼叫方式如下 term term new term 欄位名,搜尋關鍵字 query query new termquery term hits hits searche...

Lucene 搜尋方式

lucene有多種搜尋方式,可以根據需要選擇不同的方式。1 詞條搜尋 單個關鍵字查詢 主要物件是termquery 呼叫方式如下 term term new term 欄位名,搜尋關鍵字 query query new termquery term hits hits searcher.search...

lucene幾種搜尋方式

1.詞條搜尋 實現類 termquery 解釋 單個關鍵字搜尋 實現 termquery query new termquery term 2.組合搜尋 實現類 booleanquery 解釋 允許有多個關鍵字搜尋 實現 booleanquery query new booleanquery que...