首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >StandardAnalyzer - Apache Lucene

StandardAnalyzer - Apache Lucene
EN

Stack Overflow用户
提问于 2012-01-12 02:54:55
回答 1查看 694关注 0票数 1

实际上,我正在开发一个系统,在该系统中,您将一些文本文件输入到StandardAnalyzer中,然后该文件的内容将被StandardAnalyzer的输出所取代(该命令将标记并删除所有停用的单词)。到目前为止,ive开发的代码是:

代码语言:javascript
复制
    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的过滤内容替换原始文件内容,并以可读的形式显示它?

EN

回答 1

Stack Overflow用户

发布于 2012-01-12 06:35:11

标记器保存术语位置,因此理论上您可以查看位置来确定每个标记之间有多少个字符,但它们不保存标记之间的数据。所以你可以退回空格,但不能换行符。

如果您熟悉JFlex,可以修改记号赋予器,将换行符作为记号处理。然而,这可能比你从中获得的任何收获都要难。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8825002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档