簡體   English   中英

StandardAnalyzer-Apache Lucene

[英]StandardAnalyzer - Apache Lucene

我實際上是在開發一個系統,在該系統中,您將一些文本文件輸入到StandardAnalyzer,然后將該文件的內容替換為StandardAnalyzer的輸出(它將標記化並刪除所有停用詞)。 到目前為止,我開發的代碼是:

    File f = new File(path);

    TokenStream stream = analyzer.tokenStream("contents", 
            new StringReader(readFileToString(f)));

    CharTermAttribute charTermAttribute = stream.getAttribute(CharTermAttribute.class);

        while (stream.incrementToken()) {
            String term = charTermAttribute.toString();
            System.out.print(term);
        }

           //Following is the readFileToString(File f) function
     StringBuilder textBuilder = new StringBuilder();
     String ls = System.getProperty("line.separator");
     Scanner scanner = new Scanner(new FileInputStream(f));

     while (scanner.hasNextLine()){
          textBuilder.append(scanner.nextLine() + ls);
      }
      scanner.close();
    return textBuilder.toString();

readFileToString(f)是一個簡單的函數,它將文件內容轉換為字符串表示形式。 我得到的輸出是每個單詞,其中空格或它們之間的新行已刪除。 有沒有一種方法可以在分析器輸出之后保留原始空格或換行符,以便我可以將原始文件內容替換為StandardAnalyzer的過濾內容,並以可讀的形式顯示?

斷詞保存它的位置,所以從理論上講,你可以看一下位置,以確定有多少個字符有每個標記之間,但他們不救這是令牌之間的數據。 這樣您可以退回空格,但不能換行。

如果您熟悉JFlex的,你可以修改標記生成器來治療換行符作為標記。 這可能比你從它那里得到任何雖然增益更難。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM