1. 排序
1.1. sort類
public sort()
public sort(string field)
public sort(string field,boolean reverse) //預設為false,降序排序
public sort(string fields)
public sort(sortfield field)
public sort(sortfield fields)
sort sort=new sort(「bookname」);按照「bookname「這個field值進行降序排序
sort sort=new sort(「bookname」,true) //公升序排序
sort sort=new sort(new string);按照三個field進行排序,但無法指定公升序排序,所以用sortfield
1.2. sortfield類
public sortfield(string field)
public sortfield(string field,boolean reverse)
public sortfield(string field,int type) //type表示當前field值的型別
public sortfield(string field,int type,boolean reverse) //預設為false,公升序
field值的型別:sortfield.string、sortfield.int、sortfield.float
sortfield sf1=new sortfield(「booknumber」,sortfield.int,false);
sortfield sf2=new sortfield(「bookname」,sortfield.string,false);
1.3. 指定排序的法則
1.3.1.按照文件的得分降序排序
hits hits=searcher.search(query,sort.relevance);
1.3.2.按文件的內部id公升序排序
hits hits=searcher.search(query, sort.indexorder);
1.3.3.按照乙個field來排序
sort sort=new sort();
sortfield sf=new sortfield(「booknumber」,sortfield.int,false);
sort.setsort(sf);
hits hits=searcher.search(query,sort);
1.3.4.按照多個field來排序
sort sort=new sort();
sortfield sf1=new sortfield(「booknumber」,sortfield.int,false);//公升序
sortfield sf2=new sortfield(「publishdate」,sortfield.string,true);//降序
sort.setsort(new sortfield);
hits hits=searcher.search(query,sort);
1.3.5.改變sortfield中的locale資訊
string str1=」我」; string str2=」你」;
collator co1=collator.getinstance(locale.china);
collator co2=collator.getinstance(locale.japan);
system.out.println(locale.china+」:」+co1.compare(str1,str2));
system.out.println(locale.japan+」:」+co2.compare(str1,str2));
輸出結果為:
zh_cn:1
ja_jp:-1
所以public sortfield(string field,locale locale)
public sortfield(string field,locale locale,boolean reverse)
2. 過濾器
使用public hits search(query query,filter filter)
(1)簡單過濾
hits hits=searcher.search(query,new advancedsecurityfilter());//過濾掉securitylevel為0的結果
(2)範圍過濾—rangefilter
只顯示中間的
rangefilter filter=new rangefilter(「publishdate」,」1970-01-01」,」1998-12-31」,true,true」);
hits hits=searcher.search(query,filter);
無上邊界
public static rangefilter more(string fieldname,string lowerterm)
無下邊界
public static rangefilter less(string fieldname,string upperterm)
(3)在結果中查詢queryfilter
rangequery q=new rangequery(new term(「publicshdate」,」1970-01-01」),
new term(「publishdate」,」1999-01-01」),true);
queryfilter filter=new queryfilter(q);
hits hits=searcher.search(query,filter);
3. 分析器analysis
3.1. 自帶分析器和過濾器
3.2. 第三方過分析器
ø 單字分詞
ø 二分法:cjkanalyzer、中科院ictclas分詞、je分詞
ø 詞典分詞
3.2.1.je分詞用法
3.2.1.1. 示例
import jeasy.analysis.mmanalyzer;
indexwriter writer = new indexwriter(index_store_path, new mmanalyzer()
, true);
string str=" lucene是乙個全文檢索引擎的架構,"+
"提供了完整的查詢引擎和索引引擎。lucene以其方便使用、快" +
"速實施以及靈活性受到廣泛的關注。它可以方便地嵌入到各種應用" +
"中實現針對應用的全文索引、檢索功能,本總結使用lucene--2.3.2。";
mmanalyzer analyzer=new mmanalyzer();
trycatch(exception e)
輸出結果:lucene|乙個|全文|檢索|引擎|架構|提供|完整|查詢|。。。。
3.2.1.2. 設定正向最大匹配的字數
mmanalyzer analyzer=new mmanalyzer(4);
3.2.1.3. 新增新詞
mmanalyzer.addword(string word);
mmanalyzer.adddictionary(reader reader);
mmanalyzer analyzer=new mmanalyzer();
mmanalyzer.addword("麥可雷第");
4. 索引的合併
ramdirectory ramdir=new ramdirectory();
indexwriter writer = new indexwriter(ramdir, new standardanalyzer(), true);//刪除原有索引
indexwriter writer2=new indexwriter(fsdirectory.getdirectory(path,true),
new standardanalyzer(), true);
writer.adddocument(doc1);
writer2.adddocument(doc2);
writer.close();
writer2.addindexes(new directory);
writer2.close();
注意:在合併前一定要先關閉要加的索引器。 MySQL查詢 3 排序
為了方便檢視資料,可以對資料進行排序 語法 select from 表名 where order by 列1 asc desc 列2 asc desc,說明 例1 查詢未刪除學生的資訊,按名稱公升序 select from students where is delete 0 order by na...
3 排序檢索資料
3.1 排序資料 使用order by 子句 select prod name from products order by prod name 注意 使用order by 子句時,應該保證它是select語句中的最後一條子句。3.2 按多個列排序 select prod id,prod name,...
3 排序演算法 歸併排序
問題描述 歸併排序演算法對下列例項排序,寫出基於歸併排序演算法對下面例項進行排序的具體過程。a 48,12,61,3,5,19,32,7 解題思想 將n個元素分成2個子集合,分別對子集合進行排序,最終將排好序的子集合合併為有序集合。n 1是中止。如下 include include using na...