假設現有如下格式的記錄(record)
標題(title)
內容(content)
建立時間(mdtime)
現在要求搭建搜尋引擎實現在標題和內容欄位上進行搜尋,同時按照時間倒序排列
1. 建索引
file index = new file("/usr/local/...."); // 索引檔案存放目錄
indexwriter writer = new indexwriter(index, analyzer); // analyzer是分詞器,根據不同的需要選用不同的分詞器
// lucene自帶的分詞器對中文的支援太弱,網上可以找到中科院分詞和ikanalyzer,另外可以採用目前業界領先的海量分詞
document document = new document();
document.add(new field("title", title, field.store.yes, field.index.tokenized));
document.add(new field("content", content, field.store.no, field.index.tokenized));
document.add(new field("mdtime", mdtime, field.store.yes, field.index.un_tokenized));
writer.adddocument(document);
writer.optimize();
writer.close();
2. 搜尋
indexsearcher searcher = new indexsearcher("/usr/local/....");
booleanquery query = new booleanquery();
queryparser parser = new queryparser("title", analyzer);
// 設定與或關係
parser.setdefaultoperator(queryparser.and_operator);
// 查詢條件
query.add(parser.parse(title_condition), booleanclause.occur.must);
query.add(parser.parse(content_condition), booleanclause.occur.must);
// 排序
hits result = searcher.search(query, new sort("mdtime", true));
// 列印結果
for (int i = 0; i < result.length(); i++)
lucene使用facet搜尋
facet,英文翻譯為方面。lucene中的facet查詢其實就是對事物的方面查詢。我們以手機舉例。乙個手機可以有品牌,型號,運營商等多個facet,不同的facet型別可以組合成不同的手機或者手機的集合。如品牌為小公尺,運營商為移動構成的就是移動發行的所有小公尺的手機型號 小公尺1,小公尺2,小公...
Lucene使用Filter搜尋過濾
排序查詢 param querystr 查詢匹配的字串 param domain 查詢內容的域 param filter 過濾器 public void searchbyfilter string querystr,string domain,filter filter else 輸出資訊 scor...
lucene的多種搜尋
lucene的搜尋相當強大,它提供了很多輔助查詢類,各自完成一種特殊的查詢,也可以相互組合使用,來完成一些複雜的操作.public class test 按詞條搜尋 public void termsearcher throws ioexception 短語搜尋 public void phrase...