1. 自定义 `TokenFilter` 把 词性(POS) 作为 payload 贴到每个 token;
2. 建索引时启用 `with_positions_offsets_payloads`;
3. 查询阶段用 `TermVectors` API 把 payload 原样取出来。
整段代码 零依赖(除了 lucene-core、lucene-analysis-common),直接 `main` 方法即可跑。
---
1. Maven 依赖(Lucene 9.8)
```xml
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-core</artifactId>
<version>9.8.0</version>
</dependency>
<dependency>
<groupId>org.apache.lucene</groupId>
<artifactId>lucene-analysis-common</artifactId>
<version>9.8.0</version>
</dependency>
```
---
2. 自定义 TokenFilter:POS-payload
```java
import org.apache.lucene.analysis.*;
import org.apache.lucene.analysis.tokenattributes.*;
import java.io.IOException;
/**
* 把每个词后面简单拼一个词性标记当 payload。
* (真实场景可用 OpenNLP 的 POSTagger,这里为了演示用硬编码)
*/
public final class PosPayloadFilter extends TokenF

最低0.47元/天 解锁文章
424

被折叠的 条评论
为什么被折叠?



