Lucene 排序及多字段查詢

2021-05-10 23:28:22 字數 1404 閱讀 6101

預設情況下,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...