- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Lucene 索引科学文章。我正在使用以下配置:
EnglishAnalyzer analyzer = new EnglishAnalyzer(Version.LUCENE_43, EnglishAnalyzer.getDefaultStopSet());
IndexWriterConfig config = new IndexWriterConfig(Version.LUCENE_43, analyzer);
这对文字很有好处。但我想删除像“0.99”或“3,14”这样的标记,但在一个标记中保留像“H2O”这样的文本(如果可能的话,还有“n=3”)。我已经尝试过 SimpleAnalyzer
但不是我想要的。
有什么想法吗?
谢谢!
最佳答案
您可以使用自定义但简单的 FilteringTokenFilter
来实现您想要的目标,它将过滤我们所有不需要的 token ,例如通过正则表达式。您需要做的就是扩展此类并实现 accept
方法
protected boolean accept() throws IOException {
String token = new String(termAtt.buffer(), 0 ,termAtt.length());
if (token.matches("[0-9,.]+")) {
return false;
}
return true;
}
在这种情况下,我过滤掉仅包含数字、逗号和点(作为可能的分隔符)的所有标记
Tokenizer whitespaceTokenizer = new WhitespaceTokenizer(reader);
TokenStream tokenStream = new StopFilter(whitespaceTokenizer, StopAnalyzer.ENGLISH_STOP_WORDS_SET);
tokenStream = new ScientificFiltering(tokenStream);
为了不过滤 n=3 和其他类似的结构,我建议使用 WhitespaceTokenizer
,仅在空白字符上分割标记。
有关完整示例,请查看 here
关于java - Lucene TokenFilter 与 EnglishAnalyzer 用于删除科学文章中的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46050874/
我对 Lucene 还很陌生,目前正在使用 Lucene 8.2.0 索引文件集合,并在 Eclipse IDE 中编写代码。 我确实在我的 Eclipse 项目中包含了 lucene-core-8.
我正在使用 Lucene 4.3 为英文推文编制索引,但是我不确定要使用哪个分析器。 Lucene StandardAnalyzer 和 EnglishAnalyzer 有什么区别? 我还尝试使用以下
我正在使用 Lucene 索引科学文章。我正在使用以下配置: EnglishAnalyzer analyzer = new EnglishAnalyzer(Version.LUCENE_43, Eng
我是一名优秀的程序员,十分优秀!