<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
    主站蜘蛛池模板: 色天使亚洲综合在线观看| 67194成手机免费观看| 亚洲高清中文字幕免费| 亚洲A∨无码无在线观看| 亚洲AV伊人久久青青草原| 在线观看免费成人| a拍拍男女免费看全片| 污污网站免费观看| XXX2高清在线观看免费视频| 国产精品亚洲综合网站| 久久精品国产亚洲av麻豆图片| 亚洲视频在线免费观看| 亚洲精品无码av人在线观看 | 亚洲视频在线观看不卡| 色噜噜AV亚洲色一区二区| www亚洲精品少妇裸乳一区二区| 久久综合AV免费观看| 日日麻批免费40分钟日本的| 久久99精品免费视频| 永久免费av无码入口国语片| 在线免费视频你懂的| WWW国产成人免费观看视频| 黄床大片30分钟免费看| 国产精品亚洲а∨无码播放麻豆| 亚洲精品无码少妇30P| 亚洲愉拍一区二区三区| 亚洲情A成黄在线观看动漫软件 | 99爱免费观看视频在线| 免费国产叼嘿视频大全网站| 99久久免费国产精品热| 中文字幕高清免费不卡视频| 久久久精品视频免费观看| 国产精品内射视频免费| 中文字幕免费在线观看动作大片 | 亚洲国产美女精品久久久久∴ | 黄色网址在线免费| a成人毛片免费观看| 今天免费中文字幕视频| 少妇人妻偷人精品免费视频| 24小时日本电影免费看| 亚洲美女免费视频|