Lucene多字段和多目錄索引

2021-06-16 17:18:26 字數 1504 閱讀 8711

1、多欄位搜尋就是同時要乙個以上的字段中的內容進行比較搜尋,類似概念在sql中就是select * from table where a like '%query%' or b like '%query%'。

lucene.net中的單個字段查詢大家都比較熟悉,這裡對欄位content進行搜尋

query query 

=queryparser.parse(querystr,

"content",

newchineseanalyzer());

hits hits

=searcher.search(query);

對多個字段查詢用到乙個multifieldqueryparser物件,該物件繼承自query,我們要對字段title,content進行搜尋。

string

fields =;

query multiquery

=multifieldqueryparser.parse(querystr,fields,

newchineseanalyzer());

hits hits

=searcher.search(multiquery);

2、多索引目錄就是要在多個索引目錄的中進行比較搜尋,類似概念在sql中就是select * from tablea union select * from tableb。

indexsearcher searchers 

=new

indexsearcher[2];

searchers[0]

=new

indexsearcher(indexpath0);

searchers[1]

=new

indexsearcher(indexpath1);

multisearcher multisearcher

=new

multisearcher(searchers);

topdocs multitopdocs

=multisearcher.search(query,

null

, 1000

);

這個搜尋的結果可能有相同的資訊,比如你有一條相同的資訊在多個目錄中索引,搜尋的結果就會出現多次相同的資訊。

還有一種搜尋方式是用到parallelmultisearcher這個物件,它是從mulitsearcher繼承而來。

parallelmultisearcher parallelmultisearcher 

=new

parallelmultisearcher(searchers);

topdocs paralleltopdocs

=parallelmultisearcher.search(query,

null

, 1000

);

這個搜尋是對搜尋後的結果進行合併,剔除重複的資訊

lucene 多欄位 多索引搜尋與多執行緒搜尋

1 多欄位搜尋 1 term t1 new term title 會議 termquery q1 new termquery t1 term t2 new term context 交通部 termquery q2 new termquery t2 booleanquery q new boolea...

Lucene多索引目錄檢索

我們可以使用multireader 或multisearcher 搜尋多個索引庫。multireader reader new multireader new indexreader indexsearcher searcher new indexsearcher reader hits hits ...

lucene 多索引目錄搜尋實現方法

多索引目錄就是要在多個索引目錄的中進行比較搜尋,類似概念在sql中就是select from tablea union select from tableb。indexsearcher searchers new indexsearcher 2 searchers 0 new indexsearch...