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

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

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

    為oracle客戶端添加連接到服務(wù)器端的方法

    1.在oracle客戶端中按照如下路徑找到tnsnames.ora文件,并以文本格式打開
    D:\oracle\ora92\network\admin\tnsnames.ora

    2.在打開的文本中加入以下內(nèi)容
    LSD_192.168.1.32 =
      (DESCRIPTION =
        (ADDRESS_LIST =
          (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.32)(PORT = 1521))
        )
        (CONNECT_DATA =
          (SID = ora9i)
          (SERVER = DEDICATED)
        )
      )

    3.打開oracle客戶端,進(jìn)行連接服務(wù)器的操作
    此時(shí)可以發(fā)現(xiàn)在"數(shù)據(jù)庫(kù)"選項(xiàng)中多出了"LSD_192.168.1.32"這條記錄,
    如果選擇該項(xiàng),就可以連接到ip為192.168.1.32的服務(wù)器上
    數(shù)據(jù)庫(kù)的SID為 ora9i.

    posted @ 2008-04-08 13:09 魯勝迪 閱讀(586) | 評(píng)論 (0)編輯 收藏

    使用lucene對(duì)搜索結(jié)果排序

    lucene默認(rèn)根據(jù)匹配度對(duì)搜索結(jié)果降序排,如果對(duì)某個(gè)域進(jìn)行排序?
    通常分兩步:

     step1)建索引時(shí)
    doc.add(new Field("audittime", row.get("audittime").toString(),
                    Field.Store.NO, Field.Index.UN_TOKENIZED));

    關(guān)鍵點(diǎn)是你需要排序的字段建索引時(shí)應(yīng)該采用Field.Index.UN_TOKENIZED,至于需不需要Field.Store.NO看實(shí)際情況,反正不影響排序

    step2)搜索時(shí)
    public Hits search(SearchVO searchVO) throws IOException {
            ................

            Sort sort = this.buildSort(searchVO);

            Hits hits = searcher.search(query, sort);

            return hits;
    }

    private Sort buildSort(SearchVO searchVO) {

            if (searchVO.getOrderby() == null || searchVO.getOrderby().length() < 1) {
                return null;
            }

            Sort sort = new Sort(searchVO.getOrderby(),
                    (searchVO.getAscflag() == 1 ? false : true));

            return sort;

    }

     關(guān)鍵點(diǎn)是通過(guò)建立一個(gè)Sort實(shí)例然后傳給IndexSearcher 的另一個(gè)重載方法search(Query query,Sort sort);

    通過(guò)Sort你可以指定排序字段名,升序降序.

    如果你需要特指字段類型,你需要使用  new Sort(SortField field)
    或者你需要通過(guò)多字段排序,你需要使用  new Sort(SortField[] fields)
    我就不再贅述了

    題外話:
       
    使用lucene 排序是很簡(jiǎn)單的,但如何發(fā)揮它的效果是一個(gè)值得思考的地方.
       
    如果你是實(shí)時(shí)的更新lucene索引我沒話說(shuō)(這需要相當(dāng)謹(jǐn)慎的設(shè)計(jì)).

    如果你定時(shí)更新索引,就會(huì)有些問(wèn)題,比如你要排序的字段更新速度很快,你應(yīng)該如何顯示它? 因?yàn)槟闩判虻臄?shù)據(jù)(即建索引時(shí)的數(shù)據(jù))和當(dāng)前的數(shù)據(jù)并不完全同步,這會(huì)給顯示帶來(lái)問(wèn)題.如果你顯示建索引時(shí)的數(shù)據(jù),這樣排序本身沒問(wèn)題,但客戶會(huì)很奇怪我的數(shù)據(jù)明明是6了怎么還顯示4.如果你顯示當(dāng)前的數(shù)據(jù)就更奇怪了,客戶可能會(huì)奇怪我的數(shù)據(jù)是1000怎么排名第4,排名第一的才500?  如果你的數(shù)據(jù)更新緩慢,這樣做不會(huì)有什么問(wèn)題.但更新很快的話就是災(zāi)難了.

    posted @ 2008-04-01 10:22 魯勝迪 閱讀(7683) | 評(píng)論 (1)編輯 收藏

    深入 Lucene 索引機(jī)制

    Lucene 是一個(gè)基于 Java 的全文檢索工具包,你可以利用它來(lái)為你的應(yīng)用程序加入索引和檢索功能。Lucene 目前是著名的 Apache Jakarta 家族中的一個(gè)開源項(xiàng)目,下面我們即將學(xué)習(xí) Lucene 的索引機(jī)制以及它的索引文件的結(jié)構(gòu)。

    在這篇文章中,我們首先演示如何使用 Lucene 來(lái)索引文檔,接著討論如何提高索引的性能。最后我們來(lái)分析 Lucene 的索引文件結(jié)構(gòu)。需要記住的是,Lucene 不是一個(gè)完整的應(yīng)用程序,而是一個(gè)信息檢索包,它方便你為你的應(yīng)用程序添加索引和搜索功能。

    架構(gòu)概覽

    圖一顯示了 Lucene 的索引機(jī)制的架構(gòu)。Lucene 使用各種解析器對(duì)各種不同類型的文檔進(jìn)行解析。比如對(duì)于 HTML 文檔,HTML 解析器會(huì)做一些預(yù)處理的工作,比如過(guò)濾文檔中的 HTML 標(biāo)簽等等。HTML 解析器的輸出的是文本內(nèi)容,接著 Lucene 的分詞器(Analyzer)從文本內(nèi)容中提取出索引項(xiàng)以及相關(guān)信息,比如索引項(xiàng)的出現(xiàn)頻率。接著 Lucene 的分詞器把這些信息寫到索引文件中。


    圖一:Lucene 索引機(jī)制架構(gòu)
    圖一:Lucene 索引機(jī)制架構(gòu)

     

    用Lucene索引文檔

          接下來(lái)我將一步一步的來(lái)演示如何利用 Lucene 為你的文檔創(chuàng)建索引。只要你能將要索引的文件轉(zhuǎn)化成文本格式,Lucene 就能為你的文檔建立索引。比如,如果你想為 HTML 文檔或者 PDF 文檔建立索引,那么首先你就需要從這些文檔中提取出文本信息,然后把文本信息交給 Lucene 建立索引。我們接下來(lái)的例子用來(lái)演示如何利用 Lucene 為后綴名為 txt 的文件建立索引。

    1. 準(zhǔn)備文本文件

    首先把一些以 txt 為后綴名的文本文件放到一個(gè)目錄中,比如在 Windows 平臺(tái)上,你可以放到 C:\\files_to_index 下面。

    2. 創(chuàng)建索引

    清單1是為我們所準(zhǔn)備的文檔創(chuàng)建索引的代碼。


    清單1:用 Lucene 索引你的文檔
    package lucene.index;
                import java.io.File;
                import java.io.FileReader;
                import java.io.Reader;
                import java.util.Date;
                import org.apache.lucene.analysis.Analyzer;
                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;
                /**
                * This class demonstrates the process of creating an index with Lucene
                * for text files in a directory.
                */
                public class TextFileIndexer {
                public static void main(String[] args) throws Exception{
                //fileDir is the directory that contains the text files to be indexed
                File   fileDir  = new File("C:\\files_to_index ");
                //indexDir is the directory that hosts Lucene's index files
                File   indexDir = new File("C:\\luceneIndex");
                Analyzer luceneAnalyzer = new StandardAnalyzer();
                IndexWriter indexWriter = new IndexWriter(indexDir,luceneAnalyzer,true);
                File[] textFiles  = fileDir.listFiles();
                long startTime = new Date().getTime();
                //Add documents to the index
                for(int i = 0; i < textFiles.length; i++){
                if(textFiles[i].isFile() && textFiles[i].getName().endsWith(".txt")){
                System.out.println("File " + textFiles[i].getCanonicalPath()
                + " is being indexed");
                Reader textReader = new FileReader(textFiles[i]);
                Document document = new Document();
                document.add(Field.Text("content",textReader));
                document.add(Field.Text("path",textFiles[i].getPath()));
                indexWriter.addDocument(document);
                }
                }
                indexWriter.optimize();
                indexWriter.close();
                long endTime = new Date().getTime();
                System.out.println("It took " + (endTime - startTime)
                + " milliseconds to create an index for the files in the directory "
                + fileDir.getPath());
                }
                }
                

    正如清單1所示,你可以利用 Lucene 非常方便的為文檔創(chuàng)建索引。接下來(lái)我們分析一下清單1中的比較關(guān)鍵的代碼,我們先從下面的一條語(yǔ)句開始看起。


    Analyzer luceneAnalyzer = new StandardAnalyzer();
                

    這條語(yǔ)句創(chuàng)建了類 StandardAnalyzer 的一個(gè)實(shí)例,這個(gè)類是用來(lái)從文本中提取出索引項(xiàng)的。它只是抽象類 Analyzer 的其中一個(gè)實(shí)現(xiàn)。Analyzer 也有一些其它的子類,比如 SimpleAnalyzer 等。

    我們接著看另外一條語(yǔ)句:


    IndexWriter indexWriter = new IndexWriter(indexDir,luceneAnalyzer,true);
                

           這條語(yǔ)句創(chuàng)建了類 IndexWriter 的一個(gè)實(shí)例,該類也是 Lucene 索引機(jī)制里面的一個(gè)關(guān)鍵類。這個(gè)類能創(chuàng)建一個(gè)新的索引或者打開一個(gè)已存在的索引并為該索引添加文檔。我們注意到該類的構(gòu)造函數(shù)接受三個(gè)參數(shù),第一個(gè)參數(shù)指定了存儲(chǔ)索引文件的路徑。第二個(gè)參數(shù)指定了在索引過(guò)程中使用什么樣的分詞器。最后一個(gè)參數(shù)是個(gè)布爾變量,如果值為真,那么就表示要?jiǎng)?chuàng)建一個(gè)新的索引,如果值為假,就表示打開一個(gè)已經(jīng)存在的索引。

    接下來(lái)的代碼演示了如何添加一個(gè)文檔到索引文件中。


    Document document = new Document();
                document.add(Field.Text("content",textReader));
                document.add(Field.Text("path",textFiles[i].getPath()));
                indexWriter.addDocument(document);
                

          首先第一行創(chuàng)建了類 Document 的一個(gè)實(shí)例,它由一個(gè)或者多個(gè)的域(Field)組成。你可以把這個(gè)類想象成代表了一個(gè)實(shí)際的文檔,比如一個(gè) HTML 頁(yè)面,一個(gè) PDF 文檔,或者一個(gè)文本文件。而類 Document 中的域一般就是實(shí)際文檔的一些屬性。比如對(duì)于一個(gè) HTML 頁(yè)面,它的域可能包括標(biāo)題,內(nèi)容,URL 等。我們可以用不同類型的 Field 來(lái)控制文檔的哪些內(nèi)容應(yīng)該索引,哪些內(nèi)容應(yīng)該存儲(chǔ)。如果想獲取更多的關(guān)于 Lucene 的域的信息,可以參考 Lucene 的幫助文檔。代碼的第二行和第三行為文檔添加了兩個(gè)域,每個(gè)域包含兩個(gè)屬性,分別是域的名字和域的內(nèi)容。在我們的例子中兩個(gè)域的名字分別是 "content"和"path"。分別存儲(chǔ)了我們需要索引的文本文件的內(nèi)容和路徑。最后一行把準(zhǔn)備好的文檔添加到了索引當(dāng)中。

    當(dāng)我們把文檔添加到索引中后,不要忘記關(guān)閉索引,這樣才保證 Lucene 把添加的文檔寫回到硬盤上。下面的一句代碼演示了如何關(guān)閉索引。


    indexWriter.close();
                

    利用清單1中的代碼,你就可以成功的將文本文檔添加到索引中去。接下來(lái)我們看看對(duì)索引進(jìn)行的另外一種重要的操作,從索引中刪除文檔。

    從索引中刪除文檔

    類IndexReader負(fù)責(zé)從一個(gè)已經(jīng)存在的索引中刪除文檔,如清單2所示。


    清單2:從索引中刪除文檔
    File   indexDir = new File("C:\\luceneIndex");
                IndexReader ir = IndexReader.open(indexDir);
                ir.delete(1);
                ir.delete(new Term("path","C:\\file_to_index\lucene.txt"));
                ir.close();
                

           在清單2中,第二行用靜態(tài)方法 IndexReader.open(indexDir) 初始化了類 IndexReader 的一個(gè)實(shí)例,這個(gè)方法的參數(shù)指定了索引的存儲(chǔ)路徑。類 IndexReader 提供了兩種方法去刪除一個(gè)文檔,如程序中的第三行和第四行所示。第三行利用文檔的編號(hào)來(lái)刪除文檔。每個(gè)文檔都有一個(gè)系統(tǒng)自動(dòng)生成的編號(hào)。第四行刪除了路徑為"C:\\file_to_index\lucene.txt"的文檔。你可以通過(guò)指定文件路徑來(lái)方便的刪除一個(gè)文檔。值得注意的是雖然利用上述代碼刪除文檔使得該文檔不能被檢索到,但是并沒有物理上刪除該文檔。Lucene 只是通過(guò)一個(gè)后綴名為 .delete 的文件來(lái)標(biāo)記哪些文檔已經(jīng)被刪除。既然沒有物理上刪除,我們可以方便的把這些標(biāo)記為刪除的文檔恢復(fù)過(guò)來(lái),如清單 3 所示,首先打開一個(gè)索引,然后調(diào)用方法 ir.undeleteAll() 來(lái)完成恢復(fù)工作。


    清單3:恢復(fù)已刪除文檔
    File   indexDir = new File("C:\\luceneIndex");
                IndexReader ir = IndexReader.open(indexDir);
                ir.undeleteAll();
                ir.close();
                

    你現(xiàn)在也許想知道如何物理上刪除索引中的文檔,方法也非常簡(jiǎn)單。清單 4 演示了這個(gè)過(guò)程。


    清單4:如何物理上刪除文檔
    File   indexDir = new File("C:\\luceneIndex");
                Analyzer luceneAnalyzer = new StandardAnalyzer();
                IndexWriter indexWriter = new IndexWriter(indexDir,luceneAnalyzer,false);
                indexWriter.optimize();
                indexWriter.close();
                

    在清單 4 中,第三行創(chuàng)建了類 IndexWriter 的一個(gè)實(shí)例,并且打開了一個(gè)已經(jīng)存在的索引。第 4 行對(duì)索引進(jìn)行清理,清理過(guò)程中將把所有標(biāo)記為刪除的文檔物理刪除。

    Lucene 沒有直接提供方法對(duì)文檔進(jìn)行更新,如果你需要更新一個(gè)文檔,那么你首先需要把這個(gè)文檔從索引中刪除,然后把新版本的文檔加入到索引中去。

    提高索引性能

          利用 Lucene,在創(chuàng)建索引的工程中你可以充分利用機(jī)器的硬件資源來(lái)提高索引的效率。當(dāng)你需要索引大量的文件時(shí),你會(huì)注意到索引過(guò)程的瓶頸是在往磁盤上寫索引文件的過(guò)程中。為了解決這個(gè)問(wèn)題, Lucene 在內(nèi)存中持有一塊緩沖區(qū)。但我們?nèi)绾慰刂?Lucene 的緩沖區(qū)呢?幸運(yùn)的是,Lucene 的類 IndexWriter 提供了三個(gè)參數(shù)用來(lái)調(diào)整緩沖區(qū)的大小以及往磁盤上寫索引文件的頻率。

    1.合并因子(mergeFactor)

    這個(gè)參數(shù)決定了在 Lucene 的一個(gè)索引塊中可以存放多少文檔以及把磁盤上的索引塊合并成一個(gè)大的索引塊的頻率。比如,如果合并因子的值是 10,那么當(dāng)內(nèi)存中的文檔數(shù)達(dá)到 10 的時(shí)候所有的文檔都必須寫到磁盤上的一個(gè)新的索引塊中。并且,如果磁盤上的索引塊的隔數(shù)達(dá)到 10 的話,這 10 個(gè)索引塊會(huì)被合并成一個(gè)新的索引塊。這個(gè)參數(shù)的默認(rèn)值是 10,如果需要索引的文檔數(shù)非常多的話這個(gè)值將是非常不合適的。對(duì)批處理的索引來(lái)講,為這個(gè)參數(shù)賦一個(gè)比較大的值會(huì)得到比較好的索引效果。

    2.最小合并文檔數(shù)

    這個(gè)參數(shù)也會(huì)影響索引的性能。它決定了內(nèi)存中的文檔數(shù)至少達(dá)到多少才能將它們寫回磁盤。這個(gè)參數(shù)的默認(rèn)值是10,如果你有足夠的內(nèi)存,那么將這個(gè)值盡量設(shè)的比較大一些將會(huì)顯著的提高索引性能。

    3.最大合并文檔數(shù)

    這個(gè)參數(shù)決定了一個(gè)索引塊中的最大的文檔數(shù)。它的默認(rèn)值是 Integer.MAX_VALUE,將這個(gè)參數(shù)設(shè)置為比較大的值可以提高索引效率和檢索速度,由于該參數(shù)的默認(rèn)值是整型的最大值,所以我們一般不需要改動(dòng)這個(gè)參數(shù)。

    清單 5 列出了這個(gè)三個(gè)參數(shù)用法,清單 5 和清單 1 非常相似,除了清單 5 中會(huì)設(shè)置剛才提到的三個(gè)參數(shù)。


    清單5:提高索引性能
    /**
                * This class demonstrates how to improve the indexing performance
                * by adjusting the parameters provided by IndexWriter.
                */
                public class AdvancedTextFileIndexer  {
                public static void main(String[] args) throws Exception{
                //fileDir is the directory that contains the text files to be indexed
                File   fileDir  = new File("C:\\files_to_index");
                //indexDir is the directory that hosts Lucene's index files
                File   indexDir = new File("C:\\luceneIndex");
                Analyzer luceneAnalyzer = new StandardAnalyzer();
                File[] textFiles  = fileDir.listFiles();
                long startTime = new Date().getTime();
                int mergeFactor = 10;
                int minMergeDocs = 10;
                int maxMergeDocs = Integer.MAX_VALUE;
                IndexWriter indexWriter = new IndexWriter(indexDir,luceneAnalyzer,true);
                indexWriter.mergeFactor = mergeFactor;
                indexWriter.minMergeDocs = minMergeDocs;
                indexWriter.maxMergeDocs = maxMergeDocs;
                //Add documents to the index
                for(int i = 0; i < textFiles.length; i++){
                if(textFiles[i].isFile() && textFiles[i].getName().endsWith(".txt")){
                Reader textReader = new FileReader(textFiles[i]);
                Document document = new Document();
                document.add(Field.Text("content",textReader));
                document.add(Field.Keyword("path",textFiles[i].getPath()));
                indexWriter.addDocument(document);
                }
                }
                indexWriter.optimize();
                indexWriter.close();
                long endTime = new Date().getTime();
                System.out.println("MergeFactor: " + indexWriter.mergeFactor);
                System.out.println("MinMergeDocs: " + indexWriter.minMergeDocs);
                System.out.println("MaxMergeDocs: " + indexWriter.maxMergeDocs);
                System.out.println("Document number: " + textFiles.length);
                System.out.println("Time consumed: " + (endTime - startTime) + " milliseconds");
                }
                }
                

    通過(guò)這個(gè)例子,我們注意到在調(diào)整緩沖區(qū)的大小以及寫磁盤的頻率上面 Lucene 給我們提供了非常大的靈活性?,F(xiàn)在我們來(lái)看一下代碼中的關(guān)鍵語(yǔ)句。如下的代碼首先創(chuàng)建了類 IndexWriter 的一個(gè)實(shí)例,然后對(duì)它的三個(gè)參數(shù)進(jìn)行賦值。


    int mergeFactor = 10;
                int minMergeDocs = 10;
                int maxMergeDocs = Integer.MAX_VALUE;
                IndexWriter indexWriter = new IndexWriter(indexDir,luceneAnalyzer,true);
                indexWriter.mergeFactor = mergeFactor;
                indexWriter.minMergeDocs = minMergeDocs;
                indexWriter.maxMergeDocs = maxMergeDocs;
                

    下面我們來(lái)看一下這三個(gè)參數(shù)取不同的值對(duì)索引時(shí)間的影響,注意參數(shù)值的不同和索引之間的關(guān)系。我們?yōu)檫@個(gè)實(shí)驗(yàn)準(zhǔn)備了 10000 個(gè)測(cè)試文檔。表 1 顯示了測(cè)試結(jié)果。


    表1:測(cè)試結(jié)果
    表1:測(cè)試結(jié)果

            通過(guò)表 1,你可以清楚地看到三個(gè)參數(shù)對(duì)索引時(shí)間的影響。在實(shí)踐中,你會(huì)經(jīng)常的改變合并因子和最小合并文檔數(shù)的值來(lái)提高索引性能。只要你有足夠大的內(nèi)存,你可以為合并因子和最小合并文檔數(shù)這兩個(gè)參數(shù)賦盡量大的值以提高索引效率,另外我們一般無(wú)需更改最大合并文檔數(shù)這個(gè)參數(shù)的值,因?yàn)橄到y(tǒng)已經(jīng)默認(rèn)將它設(shè)置成了最大。

    Lucene 索引文件結(jié)構(gòu)分析

            在分析 Lucene 的索引文件結(jié)構(gòu)之前,我們先要理解反向索引(Inverted index)這個(gè)概念,反向索引是一種以索引項(xiàng)為中心來(lái)組織文檔的方式,每個(gè)索引項(xiàng)指向一個(gè)文檔序列,這個(gè)序列中的文檔都包含該索引項(xiàng)。相反,在正向索引中,文檔占據(jù)了中心的位置,每個(gè)文檔指向了一個(gè)它所包含的索引項(xiàng)的序列。你可以利用反向索引輕松的找到那些文檔包含了特定的索引項(xiàng)。Lucene正是使用了反向索引作為其基本的索引結(jié)構(gòu)。

    索引文件的邏輯視圖

    在Lucene 中有索引塊的概念,每個(gè)索引塊包含了一定數(shù)目的文檔。我們能夠?qū)为?dú)的索引塊進(jìn)行檢索。圖 2 顯示了 Lucene 索引結(jié)構(gòu)的邏輯視圖。索引塊的個(gè)數(shù)由索引的文檔的總數(shù)以及每個(gè)索引塊所能包含的最大文檔數(shù)來(lái)決定。


    圖2:索引文件的邏輯視圖
    圖2:索引文件的邏輯視圖

    Lucene 中的關(guān)鍵索引文件

    下面的部分將會(huì)分析Lucene中的主要的索引文件,可能分析有些索引文件的時(shí)候沒有包含文件的所有的字段,但不會(huì)影響到對(duì)索引文件的理解。

    1.索引塊文件

    這個(gè)文件包含了索引中的索引塊信息,這個(gè)文件包含了每個(gè)索引塊的名字以及大小等信息。表 2 顯示了這個(gè)文件的結(jié)構(gòu)信息。


    表2:索引塊文件結(jié)構(gòu)
    表2:索引塊文件結(jié)構(gòu)

    2.域信息文件

    我們知道,索引中的文檔由一個(gè)或者多個(gè)域組成,這個(gè)文件包含了每個(gè)索引塊中的域的信息。表 3 顯示了這個(gè)文件的結(jié)構(gòu)。


    表3:域信息文件結(jié)構(gòu)
    表3:域信息文件結(jié)構(gòu)

    3.索引項(xiàng)信息文件

    這是索引文件里面最核心的一個(gè)文件,它存儲(chǔ)了所有的索引項(xiàng)的值以及相關(guān)信息,并且以索引項(xiàng)來(lái)排序。表 4 顯示了這個(gè)文件的結(jié)構(gòu)。


    表4:索引項(xiàng)信息文件結(jié)構(gòu)
    表4:索引項(xiàng)信息文件結(jié)構(gòu)

    4.頻率文件

    這個(gè)文件包含了包含索引項(xiàng)的文檔的列表,以及索引項(xiàng)在每個(gè)文檔中出現(xiàn)的頻率信息。如果Lucene在索引項(xiàng)信息文件中發(fā)現(xiàn)有索引項(xiàng)和搜索詞相匹配。那么 Lucene 就會(huì)在頻率文件中找有哪些文件包含了該索引項(xiàng)。表5顯示了這個(gè)文件的一個(gè)大致的結(jié)構(gòu),并沒有包含這個(gè)文件的所有字段。


    表5:頻率文件的結(jié)構(gòu)
    表5:頻率文件的結(jié)構(gòu)

    5.位置文件

    這個(gè)文件包含了索引項(xiàng)在每個(gè)文檔中出現(xiàn)的位置信息,你可以利用這些信息來(lái)參與對(duì)索引結(jié)果的排序。表 6 顯示了這個(gè)文件的結(jié)構(gòu)


    表6:位置文件的結(jié)構(gòu)
    表6:位置文件的結(jié)構(gòu)

    到目前為止我們介紹了 Lucene 中的主要的索引文件結(jié)構(gòu),希望能對(duì)你理解 Lucene 的物理的存儲(chǔ)結(jié)構(gòu)有所幫助。

    總結(jié)

    目前已經(jīng)有非常多的知名的組織正在使用 Lucene,比如,Lucene 為 Eclipse 的幫助系統(tǒng),麻省理工學(xué)院的 OpenCourseWare 提供了搜索功能。通過(guò)閱讀這篇文章,希望你能對(duì) Lucene 的索引機(jī)制有所了解,并且你會(huì)發(fā)現(xiàn)利用 Lucene 創(chuàng)建索引是非常簡(jiǎn)單的事情。

    轉(zhuǎn)載于http://www.128kj.com/article/article5/lucene4.html

    posted @ 2008-03-31 20:39 魯勝迪 閱讀(287) | 評(píng)論 (0)編輯 收藏

    Lucene開發(fā)環(huán)境配置及Demo調(diào)試

    step1.安裝JDK。
    step2.Java開發(fā)環(huán)境配置(略)

    本文使用jdk1.5.0_06,安裝目錄為:C:\Java\jdk1.5.0_06。

    step3.Tomcat安裝(略)

    本文使用Tomcat 5.0,安裝目錄為:C:\Java\Tomcat 5.0。

    step4.Lucene開發(fā)環(huán)境配置

    1)解壓下載的lucene-1.4.zip,可以看到lucene-core-1.4.jar和lucene-demos-1.4.jar這兩個(gè)文件。本文解壓目錄為:C:\Java\lucene-1.4。

    2)將lucene-core-1.4.jar和lucene-demos-1.4.jar文件所在路徑添加到classpath。

    本文將C:\Java\lucene-1.4\lucene-core-1.4.jar;C:\Java\lucene-1.4\lucene-demos-1.4.jar添加到classpath中。
    二、Lucene開發(fā)包中Demo調(diào)試

    控制臺(tái)應(yīng)用程序

    step1.建立索引

    >java org.apache.lucene.demo.IndexFiles C:\Java\lucene-1.4\src

    將對(duì)C:\Java\lucene-1.4\src下所有文件建立索引,同時(shí),在當(dāng)前命令行位置將生成“index”文件夾。

    step2.執(zhí)行查詢

    >java org.apache.lucene.demo.SearchFiles

    將會(huì)出現(xiàn)“Query:”提示符,在其后輸入關(guān)鍵字,回車,即可得到查詢結(jié)果。

    Web應(yīng)用程序

    step1.將lucene-core-1.4.jar和lucene-demos-1.9.1.jar這兩個(gè)文件復(fù)制到C:\Java\Tomcat 5.0\common\lib

    step2.解壓下載的lucene-1.4.zip,可以看到luceneweb.war文件。將該文件復(fù)制到C:\Java\Tomcat 5.0\webapps

    step3.重啟Tomcat服務(wù)器。

    step4.建立索引

    >java org.apache.lucene.demo.IndexHTML -create -index D:\opt\lucene\index  ..

    step5.執(zhí)行查詢

    http://localhost:8080/luceneweb

    step6.如果上一步執(zhí)行失敗,報(bào)出無(wú)法找到index目錄的信息
         修改/luceneweb/下的configuration.jsp文件,String indexLocation = "/opt/lucene/index";改為String indexLocation = "D:\\opt\lucene\\index";


    在文本框中輸入關(guān)鍵字,執(zhí)行,即可得到查詢結(jié)果。

    posted @ 2008-03-26 13:34 魯勝迪 閱讀(5725) | 評(píng)論 (4)編輯 收藏

    eclipse技巧篇

    熱鍵篇: Template:Alt /修改處:窗口->喜好設(shè)定->工作臺(tái)->按鍵->編輯->內(nèi)容輔助。個(gè)人習(xí)慣:Shift SPACE(空白)。簡(jiǎn)易說(shuō)明:編輯程序代碼時(shí),打sysout Template啟動(dòng)鍵,就會(huì)自動(dòng)出現(xiàn):System.out.println(); 。設(shè)定Template的格式:窗口->喜好設(shè)定->Java->編輯器->模板。

    程序代碼自動(dòng)排版:Ctrl Shift F

    修改處:窗口->喜好設(shè)定->工作臺(tái)->按鍵->程序代碼->格式。

    個(gè)人習(xí)慣:Alt Z。

    自動(dòng)排版設(shè)定:窗口->喜好設(shè)定->Java->程序代碼格式制作程序。

    樣式頁(yè)面->將插入tab(而非空格鍵)以內(nèi)縮,該選項(xiàng)取消勾選

    ,下面空格數(shù)目填4,這樣在自動(dòng)編排時(shí)會(huì)以空格4作縮排。

    快速執(zhí)行程序:Ctrl F11

    個(gè)人習(xí)慣:ALT X

    修改處:窗口->喜好設(shè)定->工作臺(tái)->按鍵->執(zhí)行->啟動(dòng)前一次的啟動(dòng)作業(yè)。

    簡(jiǎn)易說(shuō)明:第一次執(zhí)行時(shí),它會(huì)詢問(wèn)您執(zhí)行模式,

    設(shè)置好后,以后只要按這個(gè)熱鍵,它就會(huì)快速執(zhí)行。

    <ALT Z(排版完)、ATL X(執(zhí)行)>..我覺得很順手^___^

    自動(dòng)匯入所需要的類別:Ctrl Shift O

    簡(jiǎn)易說(shuō)明:

    假設(shè)我們沒有Import任何類別時(shí),當(dāng)我們?cè)诔绦蚶锎蛉耄?o:p>

    BufferedReader buf =

    new BufferedReader(new InputStreamReader(System.in));

    此時(shí)Eclipse會(huì)警示說(shuō)沒有匯入類別,這時(shí)我們只要按下Ctrl Shift O

    ,它就會(huì)自動(dòng)幫我們Import類別。

    查看使用類別的原始碼:Ctrl 鼠標(biāo)左鍵點(diǎn)擊

    簡(jiǎn)易說(shuō)明:可以看到您所使用類別的原始碼。

    將選取的文字批注起來(lái):Ctrl /

    簡(jiǎn)易說(shuō)明:Debug時(shí)很方便。

    修改處:窗口->喜好設(shè)定->工作臺(tái)->按鍵->程序代碼->批注

    視景切換:Ctrl F8

    個(gè)人習(xí)慣:Alt S。

    修改處:窗口->喜好設(shè)定->工作臺(tái)->按鍵->窗口->下一個(gè)視景。

    簡(jiǎn)易說(shuō)明:可以方便我們快速切換編輯、除錯(cuò)等視景。

    密技篇:

    一套Eclipse可同時(shí)切換,英文、繁體、簡(jiǎn)體顯示:

    1.首先要先安裝完中文化包。

    2.在桌面的快捷方式后面加上參數(shù)即可,

    英文-> -nl "zh_US"

    繁體-> -nl "zh_TW"

    簡(jiǎn)體-> -nl "zh_CN"。

    (其它語(yǔ)系以此類推)

    像我2.1.2中文化后,我在我桌面的Eclipse快捷方式加入?yún)?shù)-n1 "zh_US"。

    "C:\Program Files\eclipse\eclipse.exe" -n "zh_US"

    接口就會(huì)變回英文語(yǔ)系嚕。

    利用Eclipse,在Word編輯文書時(shí)可不必將程序代碼重新編排:

    將Eclipse程序編輯區(qū)的程序代碼整個(gè)復(fù)制下來(lái)(Ctrl C),直接貼(Ctrl V)到

    Word或WordPad上,您將會(huì)發(fā)現(xiàn)在Word里的程序代碼格式,跟Eclipse

    所設(shè)定的完全一樣,包括字型、縮排、關(guān)鍵詞顏色。我曾試過(guò)JBuilder

    、GEL、NetBeans...使用復(fù)制貼上時(shí),只有縮排格式一樣,字型、顏

    色等都不會(huì)改變。

    外掛篇:

    外掛安裝:將外掛包下載回來(lái)后,將其解壓縮后,您會(huì)發(fā)現(xiàn)features、

    plugins這2個(gè)數(shù)據(jù)夾,將里面的東西都復(fù)制或移動(dòng)到Eclipse的features

    、plugins數(shù)據(jù)夾內(nèi)后,重新啟動(dòng)Eclipse即可。

    讓Eclipse可以像JBuilderX一樣使用拖拉方式建構(gòu)GUI的外掛:

    1.Jigloo SWT/Swing GUI Builder :

    http://cloudgarden.com/jigloo/index.html

    下載此版本:Jigloo plugin for Eclipse (using Java 1.4 or 1.5)

    安裝后即可由檔案->新建->其它->GUI Form選取要建構(gòu)的GUI類型。

    2.Eclipse Visual Editor Project:

    http://www.eclipse.org/vep/

    點(diǎn)選下方Download Page,再點(diǎn)選Latest Release 0.5.0進(jìn)入下載。

    除了VE-runtime-0.5.0.zip要下載外,以下這2個(gè)也要:

    EMF build 1.1.1: (build page) (download zip)

    GEF Build 2.1.2: (build page) (download zip)

    3.0 M8版本,請(qǐng)下載:

    EMF build I200403250631

    GEF Build I20040330

    VE-runtime-1.0M1

    安裝成功后,便可由File->New->Visual Class開始UI設(shè)計(jì)。

    安裝成功后,即可由新建->Java->AWT與Swing里選擇

    所要建構(gòu)的GUI類型開始進(jìn)行設(shè)計(jì)。VE必須配合著對(duì)應(yīng)

    版本,才能正常使用,否則即使安裝成功,使用上仍會(huì)

    有問(wèn)題。

    使用Eclipse來(lái)開發(fā)JSP程序:

    外掛名稱:lomboz(下載頁(yè)面)

    http://forge.objectweb.org/project/showfiles.php?group_id=97

    請(qǐng)選擇適合自己版本的lomboz下載,lomboz.212.p1.zip表示2.1.2版,

    lomboz.3m7.zip表示M7版本....以此類推。

    lomboz安裝以及設(shè)置教學(xué):

    Eclipse開發(fā)JSP-教學(xué)文件

    Java 轉(zhuǎn)exe篇:

    實(shí)現(xiàn)方式:Eclipse搭配JSmooth(免費(fèi))。

    1.先由Eclipse制作包含Manifest的JAR。

    制作教學(xué)

    2.使用JSmooth將做好的JAR包裝成EXE。

    JSmooth下載頁(yè)面:

    http://jsmooth.sourceforge.net/index.php

    3.制作完成的exe文件,可在有裝置JRE的Windows上執(zhí)行。

    Eclipse-Java 編輯器最佳設(shè)定:

    編輯器字型設(shè)定:工作臺(tái)->字型->Java編輯器文字字型。

    (建議設(shè)定Courier New -regular 10)

    編輯器相關(guān)設(shè)定:窗口->喜好設(shè)定->Java->編輯器

    外觀:顯示行號(hào)、強(qiáng)調(diào)對(duì)稱顯示的方括號(hào)、強(qiáng)調(diào)顯示現(xiàn)行行、

    顯示打印邊距,將其勾選,Tab寬度設(shè)4,打印編距字段設(shè)80。

    程序代碼協(xié)助:采預(yù)設(shè)即可。

    語(yǔ)法:可設(shè)定關(guān)鍵詞、字符串等等的顯示顏色。

    附注:采預(yù)設(shè)即可。

    輸入:全部字段都勾選。

    浮動(dòng)說(shuō)明:采預(yù)設(shè)即可。

    導(dǎo)覽:采預(yù)設(shè)即可。

    使自動(dòng)排版排出來(lái)的效果,最符合Java設(shè)計(jì)慣例的設(shè)定:

    自動(dòng)排版設(shè)定:窗口->喜好設(shè)定->Java->程序代碼制作格式。

    換行:全部不勾選。

    分行:行長(zhǎng)度上限設(shè):80。

    樣式:只將強(qiáng)制轉(zhuǎn)型后插入空白勾選。

    內(nèi)縮空格數(shù)目:設(shè)為4。

    Eclipse 的教學(xué)文件:

    Eclipse 3.0系列熱鍵表 - 中英對(duì)照解說(shuō)版 (by sungo) ~New~

    Window GCC CDT用Eclipse開發(fā)C、C (by sungo) ~New~

    其它:

    擴(kuò)充Eclipse的Java 開發(fā)工具(中文)

    使用Eclipse開發(fā)J2EE 應(yīng)用程序(中文)

    使用Eclipse平臺(tái)進(jìn)行除錯(cuò)(中文)

    用Eclipse進(jìn)行XML 開發(fā)(中文)

    開發(fā)Eclipse外掛程序(中文)

    國(guó)際化您的Eclipse外掛程序(英文)

    將Swing編輯器加入Eclipse(英文)

    如何測(cè)試你的Eclipse plug-in符合國(guó)際市場(chǎng)需求(英文)

    Eclipse 的相關(guān)網(wǎng)站:

    http://eclipse-plugins.2y.net/eclipse/index.jsp

    http://www.eclipseplugincentral.com/


    http://www.okjava.net.cn

    posted @ 2008-03-26 09:11 魯勝迪 閱讀(362) | 評(píng)論 (0)編輯 收藏

    在Eclipse中初用lucene

    lucene是apache的一個(gè)開源項(xiàng)目,一個(gè)開放源代碼的全文檢索引擎工具包。今天初學(xué)了一下。

    1. 首先下載最新版的lucene

        http://apache.mirror.phpchina.com/lucene/java/lucene-2.2.0.zip

    2. 解壓下載的包,會(huì)看到兩個(gè)jar文件。打開eclipse,新建個(gè)工程,在該工程處點(diǎn)右鍵,選擇properties,在 Libraries項(xiàng)中導(dǎo)入那兩個(gè)jar文件。

    3. 找到IndexFiles.class,雙擊打開,如圖:

       

        再點(diǎn)擊菜單欄上的run,選擇open run dialog, 在arguments項(xiàng)填入 lucene解壓的目錄/src

         

        運(yùn)行,就可以看到一些搜索結(jié)果了

    4. 再選擇SearchFiles.class,運(yùn)行,有可能需要open run dialog中改一下設(shè)置,然后程序會(huì)讓我們輸入搜索詞,輸入即可。

    今天僅僅初步了解了一下lucene,最近一直都會(huì)跟進(jìn),感覺lucene還是比較有意思的,也比較實(shí)用。

    轉(zhuǎn)載于http://hi.baidu.com/homefovever/blog/item/94121e3da42396ed3c6d97c5.html

    posted @ 2008-03-25 12:24 魯勝迪 閱讀(3875) | 評(píng)論 (0)編輯 收藏

    Lucene 安裝

    1.在網(wǎng)上下載了lucene 2.2版,http://jakarta.apache.org/Lucene/ 
    2.然后分別安裝了jdk1.6和tomcat5.5
    3.建一個(gè)目錄d:\lucenetest\index,在里面放一些文本文件和網(wǎng)頁(yè)文件
    4.進(jìn)入dos模式,輸入命令:java org.apache.lucene.demo.IndexFiles d:\lucenetest\index
    如:c:\>java org.apache.lucene.demo.IndexFiles d:\lucenetest\index 按回車,
      這時(shí)會(huì)索引d:\lucenetest\index目錄下的所有文件,包括子目錄中的文件,并將索引文件寫入:c:\index目錄中
    (自動(dòng)創(chuàng)建的,根據(jù)你的dos符起始路徑,將在其下建index目錄)。
      輸入命令:java org.apache.lucene.demo.SearchFiles
    如:c:\>java org.apache.lucene.demo.SearchFiles 回車
    5. Query:在這里輸入檢索內(nèi)容
     環(huán)境變量還是附上
     CLASSPATH :.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\lucene-core-2.0.0.jar;%JAVA_HOME%\lib\lucene-demos-2.0.0.jar
      JAVA_HOME C:\Program Files\Java\jdk1.6
      path 加上 %JAVA_HOME%\bin
    6.lucene 安裝中可能會(huì)出現(xiàn)很多問(wèn)題,與你jdk 1.6的安裝和TOMCAT的安裝有一定的關(guān)系。

     

    http://searcher.org.cn/html/lucene/20070921/212.html

     

     

    posted @ 2008-03-24 10:31 魯勝迪 閱讀(1222) | 評(píng)論 (0)編輯 收藏

    Ghost各版本對(duì)比

      不少論壇或個(gè)人都推出了Ghost版系統(tǒng),裝機(jī)超簡(jiǎn)單,節(jié)省時(shí)間,在網(wǎng)管和裝機(jī)商等人群中流傳極廣,只要用Ghost“恢復(fù)”一下,軟件、驅(qū)動(dòng)、補(bǔ)丁就全了,這其中最著名的應(yīng)該就是“番茄花園”了。

      正是為了照顧通用性和集成的驅(qū)動(dòng),這類Ghost版通常不太穩(wěn)定,而且有很多都開始集成流氓插件!

      1.首先,店主給裝的是豬豬貓的電腦城裝機(jī)版(具體是哪一版就幾不得了,因?yàn)檫€沒有堅(jiān)持3天),一看里面就有插件!而且集成的軟件太多了!可能是為了電腦城的人裝機(jī)方便吧!說(shuō)實(shí)話那系統(tǒng)速度一般!穩(wěn)定性也一般般!

      不久還下載了豬豬貓的2003(當(dāng)然不如xp用的爽了?。┖芸炀拖聧徚耍「杏X就是不適合我們用!接著上崗的是筆記本專用版!速度到還是可以的,就是那碩大的字體怎么看怎么就不爽!在豬豬貓論壇里看了好多版本都是那樣的,就再也不看了!

      2.下面說(shuō)說(shuō)xunchi,相對(duì)來(lái)說(shuō)xunchi還是相當(dāng)不錯(cuò)的。gohst最佳優(yōu)化版,速度很快,穩(wěn)定性也強(qiáng)!不足之處是不支持USB,另外在“我的電腦”里面有個(gè)“打印機(jī)”  看這有點(diǎn)礙眼!XUNCHI IE7&MEDIA PLAY 11這個(gè)嘛,相傳還是相當(dāng)不錯(cuò)的!不過(guò)很可惜我沒有裝上,因?yàn)檠b的時(shí)候忘了把視頻拔下來(lái),結(jié)果藍(lán)屏了(深度的5.2也是這樣的)!建議大家以后裝的時(shí)候注意咯!

      3.諾德爾網(wǎng)吧系統(tǒng)(nodeer)這個(gè)速度是其他系統(tǒng)比不了的??!裝好了之后PF值才36?。?56的內(nèi)存玩CS一點(diǎn)都不卡!精簡(jiǎn)了不少的組件,當(dāng)然穩(wěn)定性還行咯!!安全就相對(duì)遜色了許多了??!因?yàn)椴荒艽蜓a(bǔ)丁!一打就藍(lán)屏!用這個(gè)的人也要注意咯!諾德爾snow新春正式版,這個(gè)就不如前一個(gè)

      版本咯!速度相對(duì)前一個(gè)慢了一些!其他沒有什么區(qū)別了,就是集成了驅(qū)動(dòng),比較方便?。ㄋ坪踹€有病毒,用他的時(shí)候中了威金,結(jié)果把全盤都格了!)網(wǎng)吧系統(tǒng),大家慎重選擇!玩游戲追求速度的人首選!

      4.番茄花園,是拿同學(xué)的安裝盤裝的。美化自動(dòng)安裝的那種!里面的流氓插件不敢恭維。相信大家都知道咯!不過(guò)速度和穩(wěn)定性還好??!有點(diǎn)能耐的人把不想要的都除掉,相信還是一個(gè)很漂亮很好用的系統(tǒng)??!

      5.龍帝國(guó)。都說(shuō)他是ghost的鼻祖!確實(shí)名副其實(shí)?。》€(wěn)定,沒有插件,有速度而且安全!代表那就多咯!fxzm大俠的0425,1008都用過(guò),而且刻盤收藏!至今還是廣為流傳的?。×硗饩褪俏鏖T的了!用的就是(電腦公司版)7.0版。當(dāng)然還是繼承了龍帝國(guó)的傳統(tǒng)咯!也有很多有特色的地方!裝完之后,可以刪除驅(qū)動(dòng),除去殘余病毒和熊貓!

      另外特別爽的就是開機(jī)集成的“超級(jí)急救工具箱”了!里面東西多了去了!ghost一鍵還原,老毛挑E,PE工具箱,dos.......相當(dāng)適用啊??!不過(guò)有點(diǎn)小問(wèn)題,OFFICE組件ppt有點(diǎn)問(wèn)題,畫筆用不了!另外我同學(xué)在考試系統(tǒng)里面做ppt都不評(píng)分!當(dāng)然也不是每個(gè)人都用ppt的啦,小問(wèn)題咯!還有就是風(fēng)之客的5.0了!個(gè)人覺得這個(gè)也是相當(dāng)不錯(cuò)的!不僅美觀(喜歡里面的主題,壁紙),而且速度也不錯(cuò)!驅(qū)動(dòng)是相當(dāng)?shù)凝R全!誰(shuí)說(shuō)fxzm退隱了龍帝國(guó)就后繼無(wú)人了!江山代有人才出啊!

      6.雨林木風(fēng)。也是相當(dāng)有特色的??!都說(shuō)他的后起之秀!果不其然啊!干凈!速度!純凈!1.8!3.0!3.1都是代表咯!最初的1.8,有時(shí)會(huì)彈出內(nèi)存不能為read,不能為written,讓人郁悶??!到了3.0和3.1就好多了啊 !確實(shí)進(jìn)步不??!刻了盤幫同學(xué)裝了十幾臺(tái),用的都不錯(cuò)!現(xiàn)在的雨林木風(fēng)正在成長(zhǎng)!相信會(huì)有更多好東西誕生!

      7.系統(tǒng)之家。裝過(guò)紀(jì)念版!其實(shí)速度一般,穩(wěn)定性相對(duì)好!驅(qū)動(dòng)也全!其實(shí)也是因人而異,我覺得一般!很多人用的也很好!畢竟是系統(tǒng)之家的力作??!

      8.xp原版(上海市政府) 當(dāng)然是沒有話說(shuō)了!裝上驅(qū)動(dòng)之后PF值110多!很多系統(tǒng)都是以他為藍(lán)本的! 

      總結(jié)一下吧?。?/p>

      當(dāng)然下載的遠(yuǎn)不止這些了,可惜的是還有很多好的系統(tǒng)沒有測(cè)試,至今還有贏政的技術(shù)人員穩(wěn)定版和OFFICE2007版!東海5.0,7.3!龍卷風(fēng)1.0, 2.7!霏凡會(huì)員1.0都還在盤里閑著呢!

      在買了電腦后短短的三個(gè)月里就下了這么多系統(tǒng),裝了這么多系統(tǒng),漸漸的也沒有換系統(tǒng)的興趣了,但是卻有了裝系統(tǒng)的經(jīng)驗(yàn)了!幫不少的同學(xué)裝了系統(tǒng)!也幫他們解決了不少系統(tǒng)方面的問(wèn)題!相信對(duì)你們也有一點(diǎn)幫助吧!

      說(shuō)到底,系統(tǒng)xp到底只有一個(gè)。ghost再多也是別人的,也是大眾化的。重要的是個(gè)性化,符合自己的使用習(xí)慣才是最重要的。精簡(jiǎn),優(yōu)化.....最終都是為個(gè)性化服務(wù)的!真正最好的系統(tǒng)其實(shí)在你們自己的手里!

    posted @ 2008-03-18 15:48 魯勝迪 閱讀(1414) | 評(píng)論 (0)編輯 收藏

    Lucene配置

    Lucene開發(fā)環(huán)境配置;Lucene開發(fā)包中Demo調(diào)試。

    一、Lucene開發(fā)環(huán)境配置

    step1.Lucene開發(fā)包下載

    下載地址1:http://mirror.vmmatrix.net/apache/lucene/java/

    下載地址2:http://apache.justdn.org/lucene/java/

    從中選擇合適的版本,本文使用lucene-1.9.1.zip。

    step2.Java開發(fā)環(huán)境配置(略)

    本文使用jdk1.5.0_06,安裝目錄為:C:\Java\jdk1.5.0_06。

    step3.Tomcat安裝(略)

    本文使用Tomcat 5.0,安裝目錄為:C:\Java\Tomcat 5.0。

    step4.Lucene開發(fā)環(huán)境配置

    1)解壓下載的lucene-1.9.1.zip,可以看到lucene-core-1.9.1.jar和lucene-demos-1.9.1.jar這兩個(gè)文件。本文解壓目錄為:C:\Java\lucene-1.9.1。

    2)將lucene-core-1.9.1.jar和lucene-demos-1.9.1.jar文件所在路徑添加到classpath。

    本文將C:\Java\lucene-1.9.1\lucene-core-1.9.1.jar;C:\Java\lucene-1.9.1\lucene-demos-1.9.1.jar添加到classpath中。

    二、Lucene開發(fā)包中Demo調(diào)試

    控制臺(tái)應(yīng)用程序

    step1.建立索引

    >java org.apache.lucene.demo.IndexFiles C:\Java\lucene-1.9.1\src

    將對(duì)C:\Java\lucene-1.9.1\src下所有文件建立索引,同時(shí),在當(dāng)前命令行位置將生成“index”文件夾。

    step2.執(zhí)行查詢

    >java org.apache.lucene.demo.SearchFiles

    將會(huì)出現(xiàn)“Query:”提示符,在其后輸入關(guān)鍵字,回車,即可得到查詢結(jié)果。

     Web應(yīng)用程序

    step1.將lucene-core-1.9.1.jar和lucene-demos-1.9.1.jar這兩個(gè)文件復(fù)制到C:\Java\Tomcat 5.0\common\lib

    step2.解壓下載的lucene-1.9.1.zip,可以看到luceneweb.war文件。將該文件復(fù)制到C:\Java\Tomcat 5.0\webapps

    step3.重啟Tomcat服務(wù)器。

    step4.建立索引

    >java org.apache.lucene.demo.IndexHTML -create -index D:\opt\lucene\index  ..

    step5.執(zhí)行查詢

    http://localhost:8080/luceneweb

    在文本框中輸入關(guān)鍵字,執(zhí)行,即可得到查詢結(jié)果。

     

    參考資料:http://lucene.apache.org/java/docs/gettingstarted.html

    posted @ 2008-03-15 12:41 魯勝迪 閱讀(2118) | 評(píng)論 (0)編輯 收藏

    JDom使用詳解

    JDom是不錯(cuò)的API,算得上簡(jiǎn)單高效,最重要是已經(jīng)成為jcp的一部分,這個(gè)咱得弄弄。不過(guò)www.jdom.org上寫文檔的人實(shí)在太懶,文檔出奇的少,流傳得最廣的恐怕是IBM上面的一篇《JDom讓java XML變得容易》,不過(guò)這篇文章只涉及基本的讀寫操作,遠(yuǎn)不能勝任實(shí)際工作?;藘商鞎r(shí)間,把JDom的基本操作整理出來(lái)了,涵蓋了大部分的操作:元素、屬性、命名空間、PI、DTD、Schema,應(yīng)付一般的應(yīng)用沒什么問(wèn)題。反正我沒有在網(wǎng)上見到更加詳盡的版本,你見過(guò)的話,請(qǐng)留下連接。暫時(shí)來(lái)不及編寫詳細(xì)的說(shuō)明,先帖幾段程序,對(duì)有經(jīng)驗(yàn)的Java開發(fā)者來(lái)說(shuō),已經(jīng)足夠了。程序都已經(jīng)經(jīng)過(guò)了實(shí)際的測(cè)試,我使用的JDom是0.9版。

    1、創(chuàng)建XML文檔:


    package org.bromon.jdom.example; 
    import java.io.*
    import org.jdom.*
    import org.jdom.input.*
    import org.jdom.output.*

    public class CreateXML 

    public void Create() 

    try 

    Document doc 
    = new Document(); 
    ProcessingInstruction pi
    =new ProcessingInstruction("xml-stylesheet","type="textxsl" href="test.xsl""); 
    doc.addContent(pi); 

    Namespace ns 
    = Namespace.getNamespace("http://www.bromon.org" ); 
    Namespace ns2 
    = Namespace.getNamespace("other""http://www.w3c.org" ); 

    Element root 
    = new Element("根元素", ns); 
    root.addNamespaceDeclaration(ns2); 
    doc.setRootElement(root); 
    Element el1 
    = new Element("元素一"); 
    el1.setAttribute(
    "屬性""屬性一"); 

    Text text1
    =new Text("元素值"); 
    Element em 
    = new Element("元素二").addContent("第二個(gè)元素"); 

    el1.addContent(text1); 
    el1.addContent(em); 

    Element el2 
    = new Element("元素三").addContent("第三個(gè)元素"); 

    root.addContent(el1); 
    root.addContent(el2); 

    //縮進(jìn)四個(gè)空格,自動(dòng)換行,gb2312編碼 
    XMLOutputter outputter = new XMLOutputter(" "true,"GB2312"); 
    outputter.output(doc, 
    new FileWriter("test.xml")); 
    }
    catch(Exception e) 

    System.out.println(e); 
    }
     
    }
     

    public static void main(String args[]) 

    new CreateXML().Create(); 
    }
     

    }
     

    2、DTD驗(yàn)證的:


    package org.bromon.jdom.example; 
    import java.io.*
    import org.jdom.*
    import org.jdom.input.*
    import org.jdom.output.*

    public class XMLWithDTD 

    public void validate() 

    try 

    SAXBuilder builder 
    = new SAXBuilder(true); 
    builder.setFeature(
    "http://xml.org/sax/features/validation";,true); 
    Document doc 
    = builder.build(new FileReader("author.xml")); 

    System.out.println(
    "搞掂"); 
    XMLOutputter outputter 
    = new XMLOutputter(); 
    outputter.output(doc, System.out); 
    }
    catch(Exception e) 

    System.out.println(e); 
    }
     

    }
     
    public static void main(String args[]) 

    new XMLWithDTD().validate(); 
    }
     

    }
     

    需要說(shuō)明的是,這個(gè)程序沒有指明使用哪個(gè)DTD文件。DTD文件的位置是在XML中指定的,而且DTD不支持命名空間,一個(gè)XML只能引用一個(gè)DTD,所以程序直接讀取XML中指定的DTD,程序本身不用指定。不過(guò)這樣一來(lái),好象就只能使用外部式的DTD引用方式了?高人指點(diǎn)。

    3、XML Schema驗(yàn)證的:


    package org.bromon.jdom.example; 
    import java.io.*
    import org.jdom.*
    import org.jdom.input.*
    import org.jdom.output.*

    public class XMLWithSchema 

    String xml
    ="test.xml"
    String schema
    ="test-schema.xml"
    public void validate() 

    try 

    SAXBuilder builder 
    = new SAXBuilder(true); 
    //指定約束方式為XML schema 
    builder.setFeature("http://apache.org/xml/features/validation/schema";, true); 
    //導(dǎo)入schema文件 
    builder.setProperty("http://apache.org/xml/properties/schema/external-noNamespaceSchemaLocation";,schema); 
    Document doc 
    = builder.build(new FileReader(xml)); 

    System.out.println(
    "搞掂"); 
    XMLOutputter outputter 
    = new XMLOutputter(); 
    outputter.output(doc, System.out); 
    }
    catch(Exception e) 

    System.out.println(
    "驗(yàn)證失敗:"+e); 
    }
     

    }
     

    }

    posted @ 2008-03-04 10:04 魯勝迪 閱讀(726) | 評(píng)論 (0)編輯 收藏

    僅列出標(biāo)題
    共12頁(yè): First 上一頁(yè) 4 5 6 7 8 9 10 11 12 下一頁(yè) 
    <2025年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    導(dǎo)航

    統(tǒng)計(jì)

    常用鏈接

    留言簿(4)

    隨筆分類

    隨筆檔案

    文章分類

    新聞分類

    搜索

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲免费综合色在线视频| 国产精品亚洲片在线花蝴蝶| 美女被吸屁股免费网站| 免费人成在线观看视频高潮 | 久青草视频97国内免费影视| 免费国产污网站在线观看15| 在线播放免费播放av片| 亚洲综合av永久无码精品一区二区| 亚洲欧洲视频在线观看| 曰韩无码AV片免费播放不卡| 91精品成人免费国产片| 免费va在线观看| 亚洲人成影院在线高清| 两性色午夜视频免费播放| 18禁无遮挡无码网站免费| 亚洲乱码中文字幕综合| 亚洲精品无码人妻无码| 黄网站免费在线观看| 四虎永久免费影院| 亚洲性猛交xx乱| 99久久免费国产特黄| 免费爱爱的视频太爽了| 久久亚洲精精品中文字幕| 免费VA在线观看无码| 青娱乐免费在线视频| 亚洲精品国精品久久99热一| 精品国产亚洲一区二区三区在线观看| 久9久9精品免费观看| 亚洲第一成人影院| 亚洲综合欧美色五月俺也去| 久久久久国色av免费看| 亚洲乱码中文字幕综合234| 亚洲熟妇AV一区二区三区宅男| 久久aⅴ免费观看| 不卡精品国产_亚洲人成在线| 亚洲av综合av一区二区三区 | **真实毛片免费观看| 亚洲国产午夜福利在线播放| 亚洲码和欧洲码一码二码三码| 最近2019年免费中文字幕高清| 一本久久a久久精品亚洲|