1. 程式人生 > >Lucene建立索引和索引的基本檢索

Lucene建立索引和索引的基本檢索

Author: 百知教育 gaozhy
注:演示程式碼所使用jar包版本為 lucene-xxx-5.2.0.jar

  1. lucene索引操作

    1. 建立索引程式碼

      try {
          // 1. 指定索引檔案儲存位置
          Directory directory = FSDirectory.open(Paths.get("F:/lucene/index/example01"));
          // 2. 建立分詞器 標準分詞器
          StandardAnalyzer analyzer = new StandardAnalyzer();
          // 3. 建立索引寫入器
          IndexWriterConfig config = new
      IndexWriterConfig(analyzer); config.setOpenMode(OpenMode.CREATE_OR_APPEND); //索引不存在建立,索引存在追加 IndexWriter indexWriter = new IndexWriter(directory, config); // 4. 建立索引文件 Document document = new Document(); document.add(new Field("id", "2", StringField.TYPE_STORED )); document.add(new
      Field("name", "CoreJava實戰",StringField.TYPE_STORED )); document.add(new Field("content", "百知金牌講師 胡鑫哲出品",TextField.TYPE_STORED)); // 5. 新增索引 indexWriter.addDocument(document); // 6. 釋放資源 indexWriter.commit(); indexWriter.close(); directory.close(); } catch (Exception e) { e.printStackTrace(); }
      // 索引日期
      document.add(new Field("date", DateTools.dateToString(new Date(), Resolution.SECOND),StringField.TYPE_STORED));
      // 索引數字
      document.add(new IntField("age", 18, Field.Store.YES));
    2. 建立的索引檔案
      lucene索引檔案
  2. lucene索引的檢索

    1. 索引檢索程式碼

      try{
          // 1. 獲取索引檔案
          Directory directory = FSDirectory.open(Paths.get("F:/lucene/index/example01"));
          // 2. 讀取索引檔案
          IndexReader indexReader = DirectoryReader.open(directory);
          // 3. 建立索引檢索器
          IndexSearcher searcher = new IndexSearcher(indexReader);
          // 4. 建立查詢條件 
          QueryParser parser = new QueryParser("content",new StandardAnalyzer()); //第一個引數: 需要檢索的域名 第二個引數: 分詞器
          Query query = parser.parse("百知"); //檢索字串
          System.out.println(query.toString());
          // 5. 呼叫檢索器檢索
          TopDocs topDocs = searcher.search(query, 10); //第二個引數:返回結果 10條資訊
          System.out.println("命中數:"+topDocs.totalHits);
          ScoreDoc[] docs = topDocs.scoreDocs;
          // 6. 處理查詢結果
          for (ScoreDoc scoreDoc : docs) {
              System.out.print(searcher.doc(scoreDoc.doc).get("id") + " | ");
              System.out.print(searcher.doc(scoreDoc.doc).get("name") + " | ");
              System.out.print(searcher.doc(scoreDoc.doc).get("content"));
              System.out.println();
          }
          // 7. 釋放資源
          indexReader.close();
          directory.close();
      }catch(Exception e){
          e.printStackTrace();
      }
      // 日期檢索
      String date = searcher.doc(sd.doc).get("date");
      if(date != null){
          System.out.print(DateTools.stringToDate(date) + " | ");
      }
      // 數字檢索
      System.out.println(searcher.doc(sd.doc).get("age"));
    2. 檢索結果

      1. 使用“百知”檢索結果

        這裡寫圖片描述

      2. 使用“胡鑫哲”檢索結果
        這裡寫圖片描述

相關推薦

Lucene建立索引索引基本檢索

Author: 百知教育 gaozhy 注:演示程式碼所使用jar包版本為 lucene-xxx-5.2.0.jar lucene索引操作 建立索引程式碼 try {

mysql通過建立分割槽索引來提高查詢效率

1:建立分割槽 DROP TABLE IF EXISTS `test`; CREATE TABLE test ( id int(10) unsigned NOT NULL AUTO_INCREMENT, time datetime NOT NULL COMMENT '業務時間'

Lucene--Field域索引維護

Lucene–Field域和索引維護 一、Field域 1.Field屬性 Field是文件中的域,包括Field名和Field值兩部分,一個文件可以包括多個Field,Document只是Field的一個承載體,Field值即為要索引的內容,也是

Phoenix建立檢視索引--基於HBase

一、HBase shell命令 1. 進入hbase shell # Step1:進入hbase的安裝路徑的bin目錄 cd /home/gulfmoon/apps/hbase-1.2.4/bin # Step2:啟動hbase shell hbase shell 啟

mysql聯合索引索引優化的理解

首先介紹聯合索引的最左原則,即假設某張表test,有四個欄位,id,a,b,c;id是主鍵,a和b是聯合索引,建表和值如下: CREATE TABLE `test` ( `id` int(11) NOT NULL, `a` varchar(32) NOT NULL DEFAULT '

mysql索引學習(1)常見索引索引失效

介紹 1.什麼是索引? 一般的應用系統,讀寫比例在10:1左右,而且插入操作和一般的更新操作很少出現效能問題,在生產環境中,

Lucene 6.2.1入門教程(一) 建立索引基本搜尋索引

  簡單說兩句,Lucene現在高版本的教程很少,網上基本是4.0以下的,目前最新版是6.2.1,所以我試著來寫寫這個版本的教程。   至於那些概念什麼的,我就不多說了,大家可以參考以前的舊教程來了解Lucene的體系結構和基本原理。大致說一下Lucene就是通過建立索引這

使用Lucene索引檢索POI資料

1、簡介 關於空間資料搜尋,以前寫過《使用Solr進行空間搜尋》這篇文章,是基於Solr的GIS資料的索引和檢索。 Solr和ElasticSearch這兩者都是基於Lucene實現的,兩者都可以進行空間搜尋(Spatial Search),在有些場景,我們需要把Lucene嵌入到已有的系統提供資料索引和

Mongodb基本操作入門,增刪改查索引

less multi zhang 一個 attribute var sin 第一個 base 主要進程 mongod.exe為啟動數據庫實例的進程。 mongo是一個與mongod進程進行交互的JavaScript shell進程,它提供了一些交互的接口函數用戶

NumPy數組基本索引切片

復制 標量 內存問題 數據 利用 emp 內存 性能 設計 對一維數組來說,NumPy數組的索引切片與Python列表的功能差不多: >>> arr array([0, 1, 2, 3, 4, 5, 6, 7, 8, 9]) >>> a

Lucene實現索引查詢

ont termquery 文件夾 移植 指定 安裝過程 buffer upd 遇到 0引言   隨著萬維網的發展和大數據時代的到來,每天都有大量的數字化信息在生產、存儲、傳遞和轉化,如何從大量的信息中以一定的方式找到滿足自己需求的信息,使之有序化並加以利用成為一大難題。全

ssm學習——Lucene建立索引

一:理論知識   1.非結構化資料查詢方法     1)順序掃描法       太慢,效率不高。     2)全文檢索法       對需要查詢的文件建立索引,再對其進行搜尋。其實說白了就是為了使其結構化。   2.索引建立和搜尋流程圖     1)流程圖            2)索引庫

mysql索引、主鍵、唯一索引、聯合索引的區別(索引建立原則注意事項)

索引對資料庫效能的影響? 本質:縮小查詢範圍。大大減少需要掃描的資料量。大大提高查詢的速度,降低寫的速度,佔用磁碟。將隨機I/O變成順序I/O 特大的表怎麼解決查詢問題? 分割槽。 主鍵索引和唯一索引的區別? 一個表只能有一個主鍵索引,但可以有多個唯一索引, 主鍵索引是唯一索

mysql建立索引檢視

索引建立: 1.選表,設計表,選擇欄位 2.建檢視: 新建檢視,寫檢視程式碼 select `parkingmessage`.`id` AS `id`,`parkingmessage`.`version` AS `version`,`parkingmessage`.`sna

mysql資料庫建立索引使用

1. 2               需要注意: ,後續新增修改索引。。需要注意索引需要的不同資料庫引擎 alter table user add fulltext(欄

Lucene建立索引的概念

查詢(Query):對於全文搜尋,最終都是使用詞項指向一批document文件物件集合,利用對                            詞

Lucene建立索引流程

原始文件:網際網路上的網頁(爬蟲或蜘蛛)、資料庫中的資料、磁碟上的檔案 建立文件物件(非結構化資料) 文件物件中的屬性不叫屬性現在成為域。 每個 Document 可以有多個 Field ,不同的 Document 可以有不同的 Field,同一個 Document 可以有相

Atitit 現代資訊檢索 Atitit 重要章節 息檢索建模 檢索評價 第8章 文字分類 Line 210: 第9章 索引搜尋 第11章 Web檢索 第13章 結構化文字檢索 目錄 L

Atitit 現代資訊檢索   Atitit 重要章節 息檢索建模 檢索評價  第8章 文字分類 Line 210: 第9章 索引和搜尋 第11章 Web檢索 第13章 結構化文字檢索   目錄   Line 1

MySql 的效能分析索引建立與優化

1、索引簡單語法 建立 CREATE [UNIQUE ] INDEX indexName ON mytable(columnname(length)); ALTER mytable ADD [UNIQUE ] INDEX [indexName] ON

為什麽要將表索引建立在不同的表空間?

acl 應用 bsp 影響 目的 系統性能 為什麽 之一 rac 上一個隨筆引出的新問題,找到了一個參考: “Oracle強烈建議,任何一個應用程序的庫表至少需要創建兩個表空間,其中之一用於存儲表數據,而另一個用於存儲表索引數據。因為如果將表數據和索引數據放在一起,表數據的