03_Lucene搜索

  • 搜索的代碼
package cn.huahcao.lucene;

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.DirectoryReader;
import org.apache.lucene.index.IndexReader;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.IndexSearcher;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
import org.apache.lucene.store.FSDirectory;
import org.junit.Test;

import java.io.File;

public class IndexSearchTest{
    private String searchField = "fileContent";
    private String searchWord = "java";

    @Test
    public void testIndexSearch() throws Exception{
        //創(chuàng)建分詞器(創(chuàng)建索引和搜索時所用的分詞器必須一致)
        StandardAnalyzer analyzer = new StandardAnalyzer();

        //指定索引和文檔的目錄
        Directory dir  = FSDirectory.open(new File("G:\\Java\\JavaEE\\09_SSM\\lucene_day01\\tmp"));
        //索引和文檔的讀取對象
        DirectoryReader indexReader = IndexReader.open(dir);
        //創(chuàng)建索引的搜索對象
        IndexSearcher indexSearcher = new IndexSearcher(indexReader);
        /**
         * 默認(rèn)搜索域作用:如果搜索語法中指定域名從指定域中搜索,如果搜索時只寫了查詢關(guān)鍵字,則從默認(rèn)搜索域中進(jìn)行搜索
         * 第一個參數(shù):默認(rèn)搜索域,
         * 第二個參數(shù):分詞器
         */
        QueryParser queryParser = new QueryParser("fileContent" , analyzer);
//        Query query = queryParser.parse("apache");//從默認(rèn)域搜索
        Query query = queryParser.parse(searchField+":"+searchWord);//從指定域搜索
        /**
         * 搜索:
         * 第一個參數(shù)為查詢語句對象
         * 第二個參數(shù):指定顯示多少條
         */
        TopDocs topDocs = indexSearcher.search(query, 10);
        //一共搜索到多少條記錄
        System.out.println("=====count======"+topDocs.totalHits);
        //從搜索結(jié)果對象中獲取結(jié)果集
        ScoreDoc[] scoreDocs = topDocs.scoreDocs;

        for (ScoreDoc scoreDoc : scoreDocs){
            //獲取docId
            int docId = scoreDoc.doc;
            //通過文檔ID從硬盤中讀取出對應(yīng)的文檔
            Document document = indexReader.document(docId);
            System.out.println("fileName="+document.get("fileName"));
            System.out.println("fileSize="+document.get("fileSize"));
            System.out.println("=====================================");
        }
    }
}

創(chuàng)建索引和搜索時所用的分詞器必須一致

  • 搜索結(jié)果


  • 使用luke查看搜索結(jié)果



    也是10條搜索結(jié)果

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,040評論 25 709
  • 發(fā)現(xiàn) 關(guān)注 消息 iOS 第三方庫、插件、知名博客總結(jié) 作者大灰狼的小綿羊哥哥關(guān)注 2017.06.26 09:4...
    肇東周閱讀 15,323評論 4 61
  • 摘要:公元前221年,秦始皇帝嬴政成功兼并六國,結(jié)束了春秋戰(zhàn)國以來的的紛亂局面,對中國歷史的發(fā)展起到了積極的推動作...
    樂簡閱讀 938評論 2 6
  • 文/木一舟z 近幾日,早起捧本書一個人坐在陽臺上閱讀,晨風(fēng)輕拂,安祥靜謐,思緒清明,感覺很好。 現(xiàn)代智能手機(jī)太方便...
    木一舟z閱讀 474評論 0 6
  • 昨天深夜和女友在寒山寺等待跨年的鐘聲,渾厚的鐘聲響起的剎那,我的腦袋嗡的一聲,我突然覺得很悲傷,那情緒像夏日的大雨...
    這不是屠漢龍閱讀 235評論 0 0

友情鏈接更多精彩內(nèi)容