国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Lucene基礎(一)--入門

2019-11-14 15:23:09
字體:
來源:轉載
供稿:網友

Lucene介紹

lucene的介紹,這里引用百度百科的介紹Lucene是apache軟件基金會4 jakarta項目組的一個子項目,是一個開放源代碼的全文檢索引擎工具包,即它不是一個完整的全文檢索引擎,而是一個全文檢索引擎的架構,提供了完整的查詢引擎和索引引擎,部分文本分析引擎(英文與德文兩種西方語言)。Lucene的目的是為軟件開發人員提供一個簡單易用的工具包,以方便的在目標系統中實現全文檢索的功能,或者是以此為基礎建立起完整的全文檢索引擎。Lucene是一套用于全文檢索和搜尋的開源程式庫,由Apache軟件基金會支持和提供。Lucene提供了一個簡單卻強大的應用程式接口,能夠做全文索引和搜尋。在java開發環境里Lucene是一個成熟的免費開源工具。就其本身而言,Lucene是當前以及最近幾年最受歡迎的免費Java信息檢索程序庫。人們經常提到信息檢索程序庫,雖然與搜索引擎有關,但不應該將信息檢索程序庫與搜索引擎相混淆。

了解lucene的相關知識直接進入lucene官網 http://lucene.apache.org/

在lucene的官網我們會發現還會有一個solr的開源的軟件,它是基于的一個上層寫的應用,lucene給我提供的是類似sdk的功能,開發人員需要更多的自己寫代碼,而solr相對少些代碼。可想而知,如果使用lucene的話,我們可以更多的自定義自己的搜索

Lucene下載安裝

進入上面的lucene的官方網站,找到下載后解壓就行

根據lucene的版本的不同,需要的jdk的版本也會有差異,這個需要在官方網站上看看說明文檔,本次測試使用的lucene4.9,編譯的jdk為1.7

Unsupported major.minor version 51.0 xxx 
如果出現類似的異常,就是下載的lucene和編譯的jdk的版本不對,更新個jdk1.7 就可以

Lucene入門實例

下面是在lucene的官方文檔里的一段入門代碼

public class LuceneDemo

{

  PRivate static final Version version = Version.LUCENE_4_9;

  public static void main(String[] args) throws Exception

  {

    Analyzer analyzer = new StandardAnalyzer(version);

    // Store the index in memory:

    Directory directory = new RAMDirectory();

    // To store an index on disk, use this instead:

    //Directory directory = FSDirectory.open("/tmp/testindex");

    IndexWriterConfig config = new IndexWriterConfig(version, analyzer);

    IndexWriter iwriter = new IndexWriter(directory, config);

    Document doc = new Document();

    Document doc2 = new Document();

    String text = "This is the text to be indexed.";

    String text2 = "This is the text to be indexed22222.";

    doc.add(new Field("fieldname", text, TextField.TYPE_STORED));

    doc2.add(new Field("fieldname", text2, TextField.TYPE_STORED));

    iwriter.addDocument(doc); iwriter.addDocument(doc2); iwriter.close();

    // Now search the index:

    DirectoryReader ireader = DirectoryReader.open(directory);

    IndexSearcher isearcher = new IndexSearcher(ireader);

    // Parse a simple query that searches for "text":

    QueryParser parser = new QueryParser(version, "fieldname", analyzer);

    Query query = parser.parse("text");

    ScoreDoc[] hits = isearcher.search(query, null, 1000).scoreDocs;

    // Iterate through the results:

    for (int i = 0; i < hits.length; i++)

    {

      Document hitDoc = isearcher.doc(hits[i].doc);

      System.out.println("This is the text to be indexed="+hitDoc.get("fieldname"));

    }

    ireader.close();

    directory.close();

    }

  }

代碼解析

寫索引

建立索引開始建立Analyzer,創建索引保存位置創建寫(IndexWriter)索引對象建立文檔添加文檔域添加文檔關閉結束

讀索引

從代碼可以看到基本操作步驟:

  1. 先知名索引的位子,建立讀索引的對象
  2. 創建查詢器 Query(query有很多實現類,例子中用的是QueryParse的方法)
  3. 執行search方法,得到ScoreDoc ,解析文檔
  4. 關閉讀寫器

Lucene主要元素

Lucene中有幾個重要的元素

  1. IndexWriter – 用來創建寫索引的對象,與之配合使用的有一個IndexWriterConfig,用來對indexwriter做配置
  2. IndexSearch – 與indexwriter對應,用來讀所以
  3. Document – 被索引的內容形成一個document文檔
  4. Field – 文檔的域
  5. Query – 用來查詢的對象
  6. Term – 構建查詢
  7. ScoreDoc – 命中的結果集

比如:一篇文章,我們有title,author,createTime,category,content那么這每一個可以看做一個域,整個文章就是一個document,如果搜索內容content包含了lucene的文件,就會更具域content的所有找到有Lucene的文章。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 台南市| 绥化市| 北川| 惠来县| 库尔勒市| 晋宁县| 福清市| 定安县| 万盛区| 逊克县| 安吉县| 丹棱县| 吐鲁番市| 海阳市| 苍山县| 弥勒县| 贵南县| 乌什县| 汉沽区| 平凉市| 城口县| 衡山县| 锡林浩特市| 兰州市| 孝感市| 曲麻莱县| 临沧市| 逊克县| 内江市| 横峰县| 剑阁县| 吉隆县| 大石桥市| 博爱县| 阿拉尔市| 石嘴山市| 宁南县| 丁青县| 公主岭市| 施秉县| 武川县|