lunece查詢例項

2021-08-30 23:50:00 字數 2563 閱讀 8903

lunece查詢

//初始化indexsearcher

indexsearcher search = new indexsearcher(path);

//構建term

term term = new term(fieldname,value);

//構建query物件

query q = new termquery(term);

//檢索

hits hits = search.search(q);

//顯示查詢結果

for(int i=0; iindexsearcher的常用方法有

search(query q);

search(query q,filter filter);

search(query q,sort sort);

search(query q,filter filter,sort sort);

hits的常用方法有

doc(i); //得到第i個document

id(i); //得到第i個document在lucene檔案中的id號

length(); //結果集的數量

score(i); //第i個doucment的文件得分,預設顯示方式為score值越高,排得越前。score取值0-1之間

如果想提高score的值。可以有建立索引時設定,用field.setboost(float f)方法

field f = new field(fieldname,value,store,tokenized);

f.setboost(5f);

在lucene中,document id 越小,查詢時所需時間越短,因為hits的內部快取機制。

lunece的常用搜尋

一、termquery 詞條搜尋

query query = new termquery(new term(fieldname,value));

二、booleanquery 布林搜尋

建立二個termquery

query q1 = new termquery(new term(fieldname1,value1));

query q2 = new termquery(new term(fieldname2,value2));

建立booleanquery物件

booleanquery query = new booleanquery();

query.add(q1,booleanclause.occue.must);

query.add(q2,booleanclause.occue.must);

booleanclause.occue 有三個靜態值

must,must_not,should

must&&must = (anb)

must&&must_not = (a-(anb))

should&&should = (aub)

三、rangequery 範圍搜尋

rangequery query = new rangequery(begin,end,false);

begin = new term(fieldname,value);

end = new term(fieldname,value);

false 表示開區間 不包括 (begin,end) true 表示閉區間 包括 [begin,end]

四、prefixquery 字首搜尋

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

五、phrasequery 短語搜尋

phrasequery query = new phrasequery();

query.add(new term(fieldname,value));

query.add(new term(fieldname,value));

還可以設定坡度,query.setslop(int n),預設為0如查詢「鋼鐵」,可以用

query.add(new term(fieldname,」鋼」));

query.add(new term(fieldname,」鐵」));

如想把「鋼和鐵」,「鋼與鐵」也查詢出來。可以加上query.setslop(1);

六、multiphrasequery 多短語搜尋

multiphrasequery query = new multipharsequery();

//加入短語的字首

query.add(new term(fieldname,value));

//加入短語的字尾

query.add(new term );

七、fuzzyquery 模糊搜尋

fuzzyquery query = new fuzzyquery(new term(filed,value));

它的三個建構函式

fuzzyquery(term t);

fuzzyquery(term t,float 0.5f); 相似度。0-1之間

fuzzyquery(term t,float 0.5f,int prefixlength);字首必須相同的長度

HQL查詢例項

using system using system.collections.generic using system.linq using system.text using nhibernate using nhibernate.cfg using domainmodel.entities nam...

MySQL高階查詢 連線查詢例項

使用sql查詢很簡單,很基礎的sqlect語句查詢。如果想從多個表查詢比較複雜的資訊,就會使用高階查詢實現。常見的高階查詢包括多連線查詢,外連線查詢與組合查詢等,今天我先學習最常用的連線查詢。我先以一張person表 id,name,phone,age 與乙個student表 id,name,qq,...

mysql表單查詢 表單查詢例項

toc 1.查詢部門30中員工的詳細資訊。select from emp where deptno 30 2.找出從事clerk工作的員工的編號 姓名 部門號。select empno,ename,deptno from emp where job clerk 3.檢索出獎金多於基本工資的員工資訊。...