隨筆-6  評論-6  文章-2  trackbacks-0
          原文:http://hedong.3322.org/archives/000206.html

          Lucene是一套全文檢索的API,對其介紹的文章和應(yīng)用的案例都多,可參考lucene及本文的參考文獻(xiàn)。
            此次學(xué)習(xí),以實用為主,一是簡單應(yīng)用,二是Web應(yīng)用,三是漢化,四相關(guān)應(yīng)用(Lucene主頁上在SandBox中)。

          0、準(zhǔn)備工作
            去Lucene的主頁下載目前的穩(wěn)定版本lucene-1.2.tar.gz,解壓縮,將lucene-1.2目錄下的兩個jar文件lucene-1.2.jar和lucene-demo2-1.2.jar放到適當(dāng)?shù)哪夸浵潞螅⑵浼尤氲紺LASSPATH環(huán)境變量中。

          tar zxvf lucene-1.2.tar.gz <----解壓縮
          cd lucene-1.2
          cp *.jar $DP<---存放jar文件的目錄,根據(jù)具體工作要求用實際目錄替換
          CLASSPATH=$CLASSPATH:$DP/lucene-1.2.jar:$DP/lucene-demos-1.2.jar; export CLASSPATH
          winclasspath.gif如果不想在每次都登錄后,可以編輯/etc/profile或自己目錄下的.profile,將上面的最后一行加到文件的最后一行。Windows的設(shè)置,右擊桌面的“我的電腦”,選“高級”->“環(huán)境變量”->選中CLASSPATH->“編輯”,在輸入框中加入兩個jar文件的全路徑名,注意分隔符是分號(;)。參見右圖。

          1、運行demo

          $ java org.apache.lucene.demo.IndexFiles /usr/local/man/man1/ <--對man文件建立索引
          adding /usr/local/man/man1/mysql.1
          ...........
          adding /usr/local/man/man1/cvs.1
          1614 total milliseconds
          $ java org.apache.lucene.demo.SearchFiles <--進(jìn)行檢索
          Query: password
          Searching for: password
          7 total matching documents
          0. /usr/local/man/man1/mysql.1
          ......
          6. /usr/local/man/man1/mysqlshow.1
          Query:
          OK!Lucene自待的demo運行成功
          這個demo程序調(diào)用的主要API函數(shù):
          /*關(guān)于索引的主要函數(shù)*/
          File file=new File(argv[]);
          IndexWriter writer = new IndexWriter("index", new StandardAnalyzer(), true);

          Document doc = new Document();
          doc.add(Field.Text("path", file.getPath()));
          doc.add(Field.Keyword("modified",DateField.timeToString(file.lastModified())));
          FileInputStream is = new FileInputStream(f);
          Reader reader = new BufferedReader(new InputStreamReader(is));
          doc.add(Field.Text("contents", reader));

          writer.addDocument(doc);

          writer.optimize();
          writer.close();

          /*關(guān)于檢索的主要函數(shù)*/
          Searcher searcher = new IndexSearcher("index");
          Analyzer analyzer = new StandardAnalyzer();
          Query query = QueryParser.parse(lineforsearch, "contents", analyzer);
          Hits hits = searcher.search(query);
          for (int i = start; i < hits.length(); i++) {
          Document doc = hits.doc(i);
          String path = doc.get("path");
          System.out.println(i + ". " + path);
          }


          3、運行LuceneWeb
            假定tomcat裝在$TOMCATHOME目錄下,具體應(yīng)用時用真實的目錄替換$TOMCATHOME。

          cd $TOMCATHOME/webapps
          mkdir lucenedb
          cd lucenedb
          java org.apache.lucene.demo.IndexHTML -create -index $TOMCAT/webapps/lucenedb ../examples<--用相對路徑“..”,一來指明被索引的文件的位置,二來用來顯示被索引文件的URL,因為檢索的jsp程序在luceneweb子目錄下.examples可用其它的真實應(yīng)用的目錄名來替換
          cd ..
          cp ~/lucene-1.2/luceneweb.war . <--luceneweb.war在你解壓縮生成的lucene-1.2目錄下
          ../bin/shudown.sh
          ../bin/startup.sh

          然后通過客戶端訪問http://yourdomain.com:8080/luceneweb,如果順利瀏覽器應(yīng)出現(xiàn)右邊所示的內(nèi)容。luceneweb-1.gif.再到服務(wù)器端
          cd luceneweb
          vi configuration.jsp <--將indexLocation 的值改為 "$TOMCATHOME/webapps/lucenedb";
          cd ..
          jar -ur luceneweb.war luceneweb
          再到客戶端,刷新剛才的頁面,然后就可以輸入單詞進(jìn)行檢索了。遺憾的是,此是只能檢索英文單詞。且如果命中的html頁面的title是漢字的話,顯示也有問題。如圖。
          luceneweb-2.gif
            此處的IndexHTML,可以對htm、html和txt類型的文件進(jìn)行索引,用的是一個HTMLParser,除此以外與上一例基本相同。
          posted on 2005-06-30 11:33 gaich 閱讀(636) 評論(0)  編輯  收藏 所屬分類: J2EE應(yīng)用

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 德化县| 北安市| 武川县| 龙口市| 东海县| 昌都县| 枣庄市| 织金县| 密云县| 饶阳县| 襄樊市| 宁陵县| 固始县| 常山县| 开原市| 通辽市| 南开区| 合江县| 大渡口区| 芦山县| 新密市| 库伦旗| 杂多县| 玛多县| 崇义县| 卢龙县| 祁东县| 中卫市| 韶关市| 沙河市| 长泰县| 甘德县| 任丘市| 含山县| 钦州市| 宜宾县| 曲靖市| 华蓥市| 彭山县| 夹江县| 綦江县|