八 其他搜尋Query

2021-09-01 14:01:50 字數 2536 閱讀 6313

termrangequery :

字母範圍搜尋,不支援數字範圍,比較規則:先從第乙個字母開始比較,如果第乙個字元在查詢範圍內且不等於開始範圍的第乙個字母,例如查詢範圍"jz"--"za",被查詢的是lisi,那麼就直接匹配了,如果被查詢的是jack,由於乙個字母相等了,就比較第二個字母,依次類推。

public void searchbytermrange(string field, string start, string end, int num)

searcher.close();

} catch (corruptindexexception e) catch (ioexception e) }

su.searchbytermrange("name", "jz", "mi", 10);

numericrange :

數字範圍查詢。

query query = numericrangequery.newintrange (field, start, end, true, true);

//是否包含開始,是否包含結束

su.searchbynumricrange("attach", 2, 10, 5);

prefixquery :

通過字串字首來查詢。

query query = new prefixquery(new term(field, value));

//查詢以***開頭的

su.searchbyprefix("content", "***", 10);

wildcardquery :

萬用字元查詢。

//在傳入的value中可以使用萬用字元:?和*,?表示匹配乙個字元,*表示匹配任意多個字元

query query = new wildcardquery(new term(field, value));

//匹配@itat.org結尾的所有字元

su.searchbywildcard("email", "*@itat.org", 10);

//匹配j開頭的有三個字元的name

su.searchbywildcard("name", "j???", 10);

booleanquery :

用於表示布林查詢子句關係的類,包括:booleanclause.occur.must,booleanclause.occur.must_not,booleanclause.occur.should。

必須包含,不能包含,可以包含三種.有以下6種組合 : 

1.must和must:取得連個查詢子句的交集。 

2.must和must_not:表示查詢結果中不能包含must_not所對應的查詢子句的檢索結果。 

3.should與must_not:連用時,功能同must和must_not。

4.should與must連用時,結果為must子句的檢索結果,但是should可影響排序。

5.should與should:表示「或」關係,最終檢索結果為所有檢索子句的並集。

6.must_not和must_not:無意義,檢索無結果。

booleanquery query = new booleanquery();

query.add(new termquery(new term("name", "zhangsan")), occur.must);

query.add(new termquery(new term("content", "welcome")), occur.must_not);

phrasequery:

短語查詢。

query.add(new term("content", "pingpeng"));

query.add(new term("content", "i"));

query.setslop(3);//要求結果中不僅包含上面的term,並且兩個term之間的間隔不能超過3

fuzzyquery :

模糊查詢,在fuzzyquery類定義中定義了兩個成員變數:

private float minimumsimilarity;

private int prefixlength;

minimumsimilarity是最小相似度,取值範圍為0.0~1.0,包含0.0但不包含1.0,預設值為0.5。prefixlength是字首長度,預設為0。

minimumsimilarity表示是最小相似度,可以通過指定乙個相似度來決定模糊匹配的嚴格程度。預設為0.5,當這個值越小,通過模糊查詢出的文件的匹配程度就越低,

文件的數量也就越多;當這個值越大,說明要匹配程度更大,匹配的文件數也就越少,當相似度設定為1,那麼就退化為termquery查詢,所以當這個值》=1或<0會丟擲illegalargumentexception異常。

另外乙個引數prefixlength表示在進行模糊匹配的時候,要有多少個字首字母必須完全匹配。例如當該值設定為「1」,則表示所有此條只有第乙個字母與檢索關鍵字相符時,才會被集合選中。

fuzzyquery query = new fuzzyquery(new term("name", "zhang"), 0.1f, 0);

lucene搜尋方式(query型別)

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

lucene搜尋方式(query型別)

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

搜尋中query擴充套件方法彙總

搜尋系統是乙個複雜的系統,當使用者在輸入框中輸入想要的問題,或者輸入想要的商品後,點選 確定 按鈕,搜尋系統會經歷一系列的操作,query理解和分析,召回結果,相關性打分,排序等,所有的這些操作都在毫秒級別內完成。而本文所講述的query擴充套件是在query理解和分析階段的操作。query擴充套件...