【承接上文】 <properties> <java.version>1.8</java.version> <lunece.version>4.10.2</lunece.version></properties><dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> <!-- lucene核心庫(kù) --> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-core</artifactId> <version>${lunece.version}</version> </dependency> <!-- Lucene的查詢(xún)解析器 --> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-queryparser</artifactId> <version>${lunece.version}</version> </dependency> <!-- lucene的默認(rèn)分詞器庫(kù) --> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-analyzers-common</artifactId> <version>${lunece.version}</version> </dependency> <!-- lucene的高亮顯示 --> <dependency> <groupId>org.apache.lucene</groupId> <artifactId>lucene-highlighter</artifactId> <version>${lunece.version}</version> </dependency></dependencies> 《3,、實(shí)例代碼》
/** 1,、讀取目錄對(duì)象、2,、索引讀取工具,、 3、索引搜索工具,、4,、查詢(xún)解析器、5,、查詢(xún)對(duì)象,、 6、開(kāi)始搜索,、7,、其他 */ @Test public void frozenSearch() throws Exception { // 索引目錄對(duì)象 Directory directory = FSDirectory.open(new File('E:\\frozen')); // 索引讀取工具 IndexReader reader = DirectoryReader.open(directory); // 索引搜索工具 IndexSearcher searcher = new IndexSearcher(reader); // 創(chuàng)建查詢(xún)解析器,兩個(gè)參數(shù):默認(rèn)要查詢(xún)的字段的名稱(chēng),分詞器 QueryParser parser = new QueryParser('title', new IKAnalyzer()); // 創(chuàng)建查詢(xún)對(duì)象 Query query = parser.parse('10萬(wàn)級(jí)'); // 搜索數(shù)據(jù),兩個(gè)參數(shù):查詢(xún)條件對(duì)象要查詢(xún)的最大結(jié)果條數(shù) // 返回的結(jié)果是 按照匹配度排名得分前N名的文檔信息(包含查詢(xún)到的總條數(shù)信息,、所有符合條件的文檔的編號(hào)信息),。 TopDocs topDocs = searcher.search(query, 10); // 獲取總條數(shù) System.out.println('本次搜索共找到' + topDocs.totalHits + '條數(shù)據(jù)'); // 獲取得分文檔對(duì)象(ScoreDoc)數(shù)組.SocreDoc中包含:文檔的編號(hào)、文檔的得分 ScoreDoc[] scoreDocs = topDocs.scoreDocs; for (ScoreDoc scoreDoc : scoreDocs) { // 取出文檔編號(hào) int docID = scoreDoc.doc; // 根據(jù)編號(hào)去找文檔 Document doc = reader.document(docID); System.out.println('id: ' + doc.get('id')); System.out.println('title: ' + doc.get('title')); System.out.println('匹配度: ' + scoreDoc.score); } } 《6,、Lucene核心API》 |
|
來(lái)自: 昵稱(chēng)33542116 > 《計(jì)算機(jī)》