<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 蘆葦 閱讀(311) 評論(0)  編輯  收藏 所屬分類: JAVA
    主站蜘蛛池模板: 无码 免费 国产在线观看91| 亚洲一区二区三区高清在线观看 | 看全色黄大色大片免费久久| 亚洲av无码电影网| 免费福利在线播放| 亚洲精品国产手机| 永久在线免费观看| 亚洲三级在线免费观看| 免费下载成人电影| 亚洲人AV在线无码影院观看| 永久免费bbbbbb视频| 美女露隐私全部免费直播| www国产亚洲精品久久久| 成人免费网站视频www| 中文字幕在亚洲第一在线| a级精品九九九大片免费看| 亚洲国产精品无码专区影院| 一级毛片全部免费播放| 亚洲国产日产无码精品| 毛片a级毛片免费播放下载| 亚洲av无码一区二区三区在线播放| 国产免费变态视频网址网站| 波多野结衣中文一区二区免费 | 亚洲精品无码AV中文字幕电影网站| 无码日韩人妻AV一区免费l| 亚洲自偷自偷图片| 免费人成视频在线观看网站| 亚洲国产亚洲综合在线尤物| 又粗又硬免费毛片| 免费成人在线电影| 亚洲中文字幕无码mv| 一区二区三区亚洲视频| 久久综合国产乱子伦精品免费| 亚洲黄色激情视频| 亚洲精品高清在线| 在线观看免费中文视频| 国产亚洲精品免费| 亚洲精品中文字幕无码AV| 免费a级毛片在线观看| 99久热只有精品视频免费看| 亚洲欧美日韩中文高清www777|