java - 为什么 Lucene Token Filter 类必须声明为 "final"?

标签 java lucene tokenize

根据Solr's blog ,Lucene要求TokenFilter子类必须声明为final。在这种情况下,期末类(class)的优势是什么?它使得扩展现有 TokenFilter 的功能变得不可能。

最佳答案

TokenFilter 扩展了 TokenStream,它的 Javadoc 说:

The TokenStream-API in Lucene is based on the decorator pattern. Therefore all non-abstract subclasses must be final or have at least a final implementation of incrementToken()! This is checked when Java assertions are enabled.

例如,StandardFilter 未标记为 final(只有 incrementToken() 标记为)。

因此,如果您想扩展现有的 TokenFilter,最好通过委托(delegate)来实现。

关于java - 为什么 Lucene Token Filter 类必须声明为 "final"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23938894/

相关文章:

java - 数据库删除操作

java - 如何使用存储库中的 @Highlight 注释在 Solr 搜索中突出显示文本

java - Camel,使用字段条件分割带有 header 的大型 XML 文件

c++ - 全文分词器

python - 为什么我无法实现字符串的解码功能?

Java 反射 - 如果前面有 "set"操作,则在 "get"上出现 IllegalAccessException

java - 如何将列表中的get(0)转换为常量并获取值

java - MTOM - 根内容类型始终为文本/xml

使用整个单词在新的 Sitecore ContentSearch 中进行搜索

Lucene查询: bla~* (match words that start with something fuzzy),如何?