官术网_书友最值得收藏!

3.1.2 查詢索引庫

用戶界面輸入的查詢詞封裝成Query對象后,由IndexSearcher執行查找過程。因為往往只需要最相關的一些文檔,所以返回結果封裝在一個叫作TopDocs的對象中,如圖3-3所示。

圖3-3 查詢原理

查詢部分骨干偽代碼。

        // DirectoryReader讀入一個目錄下的索引文件
        IndexReader ir = DirectoryReader.open(directory);


        //打開索引庫
        IndexSearcher searcher = new IndexSearcher(ir);


        //根據查詢詞搜索索引庫
        TopDocs docs = searcher.search(query, 10); //最多返回10個結果


        //遍歷查詢結果
        ScoreDoc[] hits = docs.scoreDocs;
        for (ScoreDoc hit : hits){
            //…
        }


        //關閉索引庫
        searcher.close();

調用Searcher接口按關鍵詞搜索后,返回和給定查詢最相關的若干個文檔以及匹配上的文檔總數。TopDocs封裝了搜索結果以及匹配上的文檔總數。

TopDocs.scoreDocs就是一個封裝后的Document的列表。TopDocs主要包含如下兩個屬性。

        public class TopDocs {
          public int totalHits; // 查詢匹配上的文檔總數
          public ScoreDoc[] scoreDocs; // 命中文檔列表頂部的文檔
        }
主站蜘蛛池模板: 桑植县| 苏尼特右旗| 渭南市| 石景山区| 登封市| 呼和浩特市| 洮南市| 平陆县| 平安县| 邢台市| 昌邑市| 凌源市| 渝北区| 彭水| 全南县| 库尔勒市| 勃利县| 望奎县| 马龙县| 扎鲁特旗| 瑞昌市| 三穗县| 新兴县| 垫江县| 娄底市| 五大连池市| 徐闻县| 海林市| 离岛区| 蕉岭县| 浠水县| 九台市| 崇信县| 会昌县| 大新县| 翁牛特旗| 宜兰市| 浮梁县| 东兰县| 延津县| 宜昌市|