在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 教程/ 大數(shù)據(jù)/ Lucene搜索操作
Lucene TermRangeQuery類
Lucene排序
Lucene Query類
Lucene搜索操作
Lucene TokenStream
Lucene IndexWriter類
Lucene Term類
Lucene Token
Lucene索引操作
Lucene Field選項
Lucene BooleanQuery類
Lucene StandardAnalyzer類
Lucene字段
Lucene添加文檔操作
Lucene環(huán)境設置
Lucene Searching類
Lucene StopAnalyzer類
Lucene第一個應用程序
Lucene MatchAllDocsQuery類
Lucene IndexSearcher類
Lucene索引類
Lucene更新文檔操作
Lucene教程
Lucene PrefixQuery類
Lucene Analyzer類
Lucene TopDocs類
Lucene TermQuery類
Lucene文檔
Lucene查詢編程
Lucene WildcardQuery類
Lucene WhitespaceAnalyzer
Lucene SimpleAnalyzer類
Lucene目錄
Lucene刪除文檔操作
Lucene索引過程
Lucene FuzzyQuery類
Lucene PhraseQuery類
Lucene分析

Lucene搜索操作

搜索過程是由Lucene所提供的核心功能之一。下圖說明了搜索過程和使用的類。 IndexSearcher是搜索過程中最重要的和核心組件。

Searching Process

我們首先創(chuàng)建目錄包含索引,然后將它傳遞給IndexSearcher,它使用IndexReader打開目錄。然后,創(chuàng)建一個期限查詢,使搜索usingIndexSearcher通過將查詢到的搜索。 IndexSearcher返回TopDocs對象包含搜索信息連同它是搜索操作的結果的文檔的文檔ID(多個)。

現(xiàn)在,我們將展示一個循序漸進的過程,以獲得在索引過程的理解,使用一個基本的例子。

創(chuàng)建QueryParser

  • QueryParser類解析用戶輸入,并輸入到 Lucene 理解的格式的查詢。

  • 創(chuàng)建QueryParser的對象。

  • 初始化一個在此查詢運行有標準的分析版本信息和索引的名字創(chuàng)建QueryParser對象。

QueryParser queryParser;

public Searcher(String indexDirectoryPath) throws IOException{

   queryParser = new QueryParser(Version.LUCENE_36,
      LuceneConstants.CONTENTS,
         new StandardAnalyzer(Version.LUCENE_36));
}

創(chuàng)建IndexSearcher

  • IndexSearcher類作為它在索引過程中創(chuàng)建搜索索引的核心組成部分。

  • 創(chuàng)建IndexSearcher對象。

  • 創(chuàng)建其應指向位置,其中索引是存儲一個 lucene 的目錄。

  • 初始化索引目錄中創(chuàng)建 IndexSearcher 的對象

IndexSearcher indexSearcher;

public Searcher(String indexDirectoryPath) throws IOException{
   Directory indexDirectory = 
      FSDirectory.open(new File(indexDirectoryPath));
   indexSearcher = new IndexSearcher(indexDirectory);
}

搜索

  • 要開始搜索,通過 QueryParser 解析搜索表達式創(chuàng)建一個查詢對象。

  • 通過調用IndexSearcher.search()方法搜索。

Query query;

public TopDocs search( String searchQuery) throws IOException, ParseException{
   query = queryParser.parse(searchQuery);
   return indexSearcher.search(query, LuceneConstants.MAX_SEARCH);
}

獲取文件

public Document getDocument(ScoreDoc scoreDoc) 
   throws CorruptIndexException, IOException{
   return indexSearcher.doc(scoreDoc.doc);	
}

關閉IndexSearcher

public void close() throws IOException{
   indexSearcher.close();
}

應用程序示例

讓我們創(chuàng)建一個測試Lucene的應用程序來測試搜索過程。

步驟 描述
1 創(chuàng)建下名稱為LuceneFirstApplication的一個項目作為解釋Lucene的應用在包packagecom.yiibai.lucene下,在第一個應用程序的篇章。也可以使用Lucene創(chuàng)建的項目理解搜索過程。
2 創(chuàng)建LuceneConstants.java,TextFileFilter.java和Searcher.java 用于 Lucene解釋- 在第一應用章節(jié)。其它文件保持不變。
3 創(chuàng)建LuceneTester.java如下所述。
4 清理和構建應用程序,以確保業(yè)務邏輯按要求工作。

LuceneConstants.java

這個類是用來提供可應用于示例應用程序中使用的各種常量。

package com.yiibai.lucene;

public class LuceneConstants {
   public static final String CONTENTS="contents";
   public static final String FILE_NAME="filename";
   public static final String FILE_PATH="filepath";
   public static final int MAX_SEARCH = 10;
}

TextFileFilter.java

此類用于 .txt文件過濾器。

package com.yiibai.lucene;

import java.io.File;
import java.io.FileFilter;

public class TextFileFilter implements FileFilter {

   @Override
   public boolean accept(File pathname) {
      return pathname.getName().toLowerCase().endsWith(".txt");
   }
}

Searcher.java

這個類用來讀取就使用Lucene庫的原始數(shù)據(jù),并搜索數(shù)據(jù)的索引。

package com.yiibai.lucene;

import java.io.File;
import java.io.IOException;

import org.apache.lucene.analysis.standard.StandardAnalyzer;