鍍金池/ 教程/ 大數(shù)據(jù)/ Lucene PhraseQuery類
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)境設(shè)置
Lucene Searching類
Lucene StopAnalyzer類
Lucene第一個應(yīng)用程序
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 PhraseQuery類

詞組查詢用于搜索包含詞條的特定序列的文檔。

類聲明

以下是org.apache.lucene.search.PhraseQuery類的聲明:

public class PhraseQuery
   extends Query

類的構(gòu)造函數(shù)

S.N. 構(gòu)造函數(shù)和說明
1 PhraseQuery()
構(gòu)造一個空的短語查詢。

類方法

S.N. 方法 & 描述
1 void add(Term term) 
增加了一個術(shù)語的查詢短語的末端。
2 void add(Term term, int position) 
增加了一個術(shù)語的查詢短語的末端。
3 Weight createWeight(Searcher searcher) 
構(gòu)造一個適當(dāng)?shù)闹亓繉?shí)現(xiàn)這個查詢。
4 boolean equals(Object o) 
返回true如果o為等于這一對象。
5 void extractTerms(Set<Term> queryTerms) 
加上在此查詢到設(shè)定的條款發(fā)生的所有條款。
6 int[] getPositions() 
返回這個詞組方面的相對位置。
7 int getSlop() 
返回斜率。
8 Term[] getTerms() 
返回這個詞組條款集合。
9 int hashCode() 
返回此對象的哈希碼值。
10 Query rewrite(IndexReader reader) 
調(diào)用重新編寫查詢到原始查詢。
11 void setSlop(int s) 
設(shè)置了查詢短語中兩個詞之間允許其它詞的數(shù)量。
12 String toString(String f) 
打印這個查詢的一個用戶可讀的版本。

方法繼承

這個類從以下類繼承的方法:

  • org.apache.lucene.search.Query

  • java.lang.Object

使用

private void searchUsingPhraseQuery(String[] phrases)
   throws IOException, ParseException{
   searcher = new Searcher(indexDir);
   long startTime = System.currentTimeMillis();

   PhraseQuery query = new PhraseQuery();
   query.setSlop(0);

   for(String word:phrases){
      query.add(new Term(LuceneConstants.FILE_NAME,word));
   }

   //do the search
   TopDocs hits = searcher.search(query);
   long endTime = System.currentTimeMillis();

   System.out.println(hits.totalHits +
      " documents found. Time :" + (endTime - startTime) + "ms");
   for(ScoreDoc scoreDoc : hits.scoreDocs) {
      Document doc = searcher.getDocument(scoreDoc);
      System.out.println("File: "+ doc.get(LuceneConstants.FILE_PATH));
   }
   searcher.close();
}

應(yīng)用程序示例

讓我們創(chuàng)建一個測試Lucene的應(yīng)用程序中使用PhraseQuery測試搜索。

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

LuceneConstants.java

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

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;
}

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;
import org上一篇:Lucene搜索操作下一篇:Lucene TermQuery類