[英]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.