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

3.1.4 查詢文檔索引

QueryParser這個類位于org.apache.lucene.queryparser.classic包,需要引用lucene-queryparser-6.3.0.jar文件。

新建一個測試類來查詢索引,得到查詢對象。

        String defaultField = "title";
        String queryString ="test";
        Analyzer analyzer = new StandardAnalyzer();
        QueryParser parser = new QueryParser(defaultField,
                                            analyzer);  //用于解析查詢語法
        //從字符串得到查詢對象
        Query query = parser.parse(queryString);

調用IndexSearcher.search方法執行搜索后,從IndexSearcher中根據文檔編號取出文檔對象。

        TopDocs hits = searcher.search(query, 10);
        System.out.println("hits.totalHits:"+ hits.totalHits);
        for (int j = 0; j < hits.scoreDocs.length; j++) {
            //根據文檔編號取出文檔對象
            Document hitDoc = searcher.doc(hits.scoreDocs[j].doc);
            System.out.println(hitDoc.get("title")); //輸出文檔
        }

注意,這里的hits.totalHits和hits.scoreDocs.length的值往往不一樣。對于網頁搜索來說,hits.totalHits表示索引中總的文檔數,而hits.scoreDocs.length表示當前頁中實際顯示的文檔數。

因為倒排索引中只存文檔編號,不存全文,所以IndexSearcher.search方法搜出來的結果中只有文檔編號序列。但Lucene的索引中不只是有倒排索引,還存儲了文檔內容,所以可以根據文檔編號得到文檔對象。

主站蜘蛛池模板: 历史| 陕西省| 乐亭县| 九龙坡区| 兰州市| 民丰县| 曲水县| 达孜县| 芮城县| 澄城县| 通河县| 沂水县| 腾冲县| 昌邑市| 大同市| 子洲县| 白沙| 张家川| 西乌珠穆沁旗| 勐海县| 青铜峡市| 益阳市| 保德县| 巫溪县| 郁南县| 和田市| 会宁县| 商都县| 兴安盟| 靖远县| 广宗县| 蕉岭县| 赣榆县| 贞丰县| 平远县| 政和县| 巴东县| 长泰县| 遂川县| 和龙市| 南通市|