預設情況下,indexsearcher類的search方法返回查詢結果時,是按文件的分值排序的,可以使用過載的search方法對結果排序
indexsearcher.search(query,sort);
new sort() 和 sort.relevance,以及null一樣,採用預設排序,要定義排序字段,方法是將字段傳入sort物件
sort sort = new sort(string field);
也可以對多個字段排序sort sort = new sort(string fields);
例: sort sort = new sort(new sortfield);
hits hits=searcher.search(query,sort);
多欄位查詢multifieldqueryparser
只在某些term中查詢,不關心在哪個字段
query query = new multifieldqueryparser.parse(「word」,new string,analyzer); //在title和content中找word
多字段時預設是or關係,要改變它,使用以下方法:
query query = multifieldqueryparser.parse(「word」,new string,new int,analyzer);
其中:
required_field 表示該條件必須有
prohibited_field 表示必須不含
搜尋多個索引檔案multisearcher
1) 建立多個索引:使用不同的索引目錄,例項化不同的indexwriter
2) 建立多索引搜尋器:
searcher searchers = new searcher[2];
searchers[0] = new indexsearcher(dir1); //搜尋索引目錄一
searchers[1]= new indexsearcher(dir2);//搜尋索引目錄二
searcher searcher = new multisearcher(serarchers);
3) 開始查詢:hits hits = searcher.search(query);
還有一種搜尋方式是用到parallelmultisearcher這個物件,它是從mulitsearcher繼承而來。
parallelmultisearcher parallelmultisearcher = new parallelmultisearcher(searchers);
topdocs paralleltopdocs = parallelmultisearcher.search(query, null, 1000);
這個搜尋是對搜尋後的結果進行合併,剔除重複的資訊。
Lucene 排序及多字段查詢
預設情況下,indexsearcher類的search方法返回查詢結果時,是按文件的分值排序的,可以使用過載的search方法對結果排序 indexsearcher.search query,sort new sort 和 sort.relevance,以及null一樣,採用預設排序,要定義排序字段...
lucene多欄位查詢
booleanquery typenegativesearch new booleanquery queryparser parser new queryparser contents new analyzer parser.setdefaultoperator queryparser.and op...
lucene多欄位查詢
我的例子就是2.0的,現在給你的是兩個域,你可以用n個域 booleanquery typenegativesearch new booleanquery queryparser parser new queryparser contents new analyzer parser.setdefau...