<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    空間站

    北極心空

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      15 Posts :: 393 Stories :: 160 Comments :: 0 Trackbacks

    package phz;

    import org.apache.lucene.analysis.standard.StandardAnalyzer;
    import org.apache.lucene.document.Document;
    import org.apache.lucene.document.Field;
    import org.apache.lucene.index.IndexWriter;
    import org.apache.lucene.queryParser.MultiFieldQueryParser;
    import org.apache.lucene.search.BooleanClause;
    import org.apache.lucene.search.Hits;
    import org.apache.lucene.search.IndexSearcher;
    import org.apache.lucene.search.MultiSearcher;
    import org.apache.lucene.search.Query;

    /**
     * 這個實例包含了lucene所有核心用法
     *
     * @author panhuizi
     *
     */
    public class LuceneTest {

     public static void main(String[] args) {
      try {
       LuceneTest luceneTest = new LuceneTest();
       // 創建索引
       luceneTest.index();
       // 在索引所在目錄下搜索"中國 金牌"
       luceneTest.search("中國 金牌");
      } catch (Exception e) {
       e.printStackTrace();
      }
      System.out.println("ok");
     }

     public void index() throws Exception {
      /* 創建索引初始化,執行這些語句將創建或清空d:\\save\\目錄下所有索引 */
      IndexWriter writer1 = new IndexWriter("d:\\save\\",
        new StandardAnalyzer(), true);
      writer1.close();

      /*
       * 往創建的初始化索引中添加索引內容,StandardAnalyzer表示用lucene自帶的標準分詞機制,
       * false表示不覆蓋原來該目錄的索引,細心的讀者可能已經發現, 這句話和上面的那句就這個false不一樣
       */
      IndexWriter writer2 = new IndexWriter("d:\\save\\",
        new StandardAnalyzer(), false);
      /* 創建一份文件 */
      Document doc1 = new Document();
      /*
       * 創建一個域ArticleTitle,并往這個域里面添加內容 "Field.Store.YES"表示域里面的內容將被存儲到索引
       * "Field.Index.TOKENIZED"表示域里面的內容將被索引,以便用來搜索
       */
      Field field1 = new Field("ArticleTitle", "北京2008年奧運會", Field.Store.YES,
        Field.Index.TOKENIZED);
      /* 往文件里添加這個域 */
      doc1.add(field1);
      /* 同理:創建另外一個域ArticleText,并往這個域里面添加內容 */
      Field field2 = new Field("ArticleText", "這是一屆創造奇跡、超越夢想的奧運會.......",
        Field.Store.YES, Field.Index.TOKENIZED);
      doc1.add(field2);
      // 在這里還可以添加其他域
      /* 添加這份文件到索引 */
      writer2.addDocument(doc1);

      /* 同理:創建第二份文件 */
      Document doc2 = new Document();
      field1 = new Field("ArticleTitle", "中國獲得全球贊譽", Field.Store.YES,
        Field.Index.TOKENIZED);
      doc2.add(field1);
      field2 = new Field("ArticleText", "中國所取得的金牌總數排行榜的榜首........",
        Field.Store.YES, Field.Index.TOKENIZED);
      doc2.add(field2);

      writer2.addDocument(doc2);

      // 在這里可以添加其他文件

      /* 關閉 */
      writer2.close();
     }

     public void search(String serchString) throws Exception {
      /* 創建一個搜索,搜索剛才創建的d:\\save\\目錄下的索引 */
      IndexSearcher indexSearcher = new IndexSearcher("d:\\save\\");
      /* 在這里我們只需要搜索一個目錄 */
      IndexSearcher indexSearchers[] = { indexSearcher };
      /* 我們需要搜索兩個域"ArticleTitle", "ArticleText"里面的內容 */
      String[] fields = { "ArticleTitle", "ArticleText" };
      /* 下面這個表示要同時搜索這兩個域,而且只要一個域里面有滿足我們搜索的內容就行 */
      BooleanClause.Occur[] clauses = { BooleanClause.Occur.SHOULD,
        BooleanClause.Occur.SHOULD };
      /*
       * MultiFieldQueryParser表示多個域解析,
       * 同時可以解析含空格的字符串,如果我們搜索"中國 金牌",根據前面的索引,顯然搜到的是第二份文件
       */
      Query query = MultiFieldQueryParser.parse(serchString, fields, clauses,
        new StandardAnalyzer());
      /* Multisearcher表示多目錄搜索,在這里我們只有一個目錄 */
      MultiSearcher searcher = new MultiSearcher(indexSearchers);
      /* 開始搜索 */
      Hits h = searcher.search(query);
      /* 把搜索出來的所有文件打印出來 */
      for (int i = 0; i < h.length(); i++) {
       /* 打印出文件里面ArticleTitle域里面的內容 */
       System.out.println(h.doc(i).get("ArticleTitle"));
       /* 打印出文件里面ArticleText域里面的內容 */
       System.out.println(h.doc(i).get("ArticleText"));
      }
      /* 關閉 */
      searcher.close();
     }
    }

    posted on 2008-10-14 18:34 蘆葦 閱讀(310) 評論(0)  編輯  收藏 所屬分類: JAVA
    主站蜘蛛池模板: 国产又黄又爽又大的免费视频 | 国产亚洲成归v人片在线观看 | 看全免费的一级毛片| 最近的中文字幕大全免费版 | 久久亚洲AV成人无码国产电影| 国产精品69白浆在线观看免费 | 日本免费电影一区二区| 国精无码欧精品亚洲一区| 中国国语毛片免费观看视频| 亚洲美女又黄又爽在线观看| 中国一级特黄高清免费的大片中国一级黄色片| 免费在线观看亚洲| 九一在线完整视频免费观看| 亚洲视频在线精品| 黄色网址在线免费| 亚洲综合激情六月婷婷在线观看 | 国产拍拍拍无码视频免费| 亚洲AV日韩AV永久无码久久 | 好吊妞998视频免费观看在线| 亚洲欧洲无码一区二区三区| 国产乱弄免费视频| 国产免费黄色无码视频| 亚洲成a人片在线观看日本| 久久精品免费观看国产| 亚洲免费二区三区| 免费a级毛片18以上观看精品| 大片免费观看92在线视频线视频| 亚洲综合另类小说色区| 精品无码AV无码免费专区| 亚洲永久在线观看| 亚洲日韩中文字幕日韩在线| 精品免费tv久久久久久久| 久久精品国产亚洲综合色| a级毛片免费全部播放| 亚洲精品福利网站| 国产成人免费片在线视频观看| 国产免费久久久久久无码| 亚洲色图.com| 亚洲av高清在线观看一区二区 | 亚洲中文字幕久久精品无码喷水| 三年片在线观看免费观看大全动漫|