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.檢索出獎金多於基本工資的員工資訊。...