lucene - 在没有索引的情况下查询 lucene token

标签 lucene analyzer token compass-lucene

我正在使用 Lucene(或更具体地说 Compass)来记录论坛中的线程,我需要一种方法来提取讨论背后的关键字。也就是说,我不想对某人所做的每个条目进行索引,而是有一个与特定上下文相关的“关键字”列表,如果该条目与关键字匹配并且高于阈值,我会添加将这些条目添加到索引中。

我希望能够利用分析器的强大功能来剥离内容并发挥其魔力,然后从分析器返回标记以匹配关键字,并计算某些单词出现的次数提到过。

有没有一种方法可以从分析器获取 token ,而无需为每个条目建立索引?

我想我必须维护一个 RAMDirectory 来保存所有条目,然后使用我的关键字列表执行搜索,然后将相关文档合并到持久性管理器以实际存储相关条目。

最佳答案

您应该能够完全跳过使用 RAMDirectory。您可以直接调用 StandardAnalyzer 并让它向您传回 token 列表(也称为关键字)。

StandardAnalyzer analyzer = new StandardAnalyzer;
TokenStream stream = analyzer.tokenStream("meaningless", new StringReader("<text>"));
while (true) {
    Token token = stream.next();
    if (token == null) break;

    System.out.println(token.termText());
}

更好的是,编写您自己的分析器(它们并不难,查看现有分析器的源代码),使用您自己的过滤器来监视关键字。

关于lucene - 在没有索引的情况下查询 lucene token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1571071/

相关文章:

java - 如何测试 Lucene 分析器?

lucene - 在 Lucene 中组合分析器的最佳实践是什么?

rust - 如何在 `quote!` 宏中的变量之后立即连接 token ?

android - DRF(django-rest-framework)和TokenAuthentication,如何根据Token自动填充json字段?

java - 没有JAVA字典的英语Lemmatizer?

java Lucene最佳匹配不是精确匹配

lucene - 如何使用 lucene 搜索 'and'?

lucene - lucene 如何处理 StringField 中的点 ('.' )? (问题索引和搜索文件名)

java - 从 Lucene 标准分析器中删除空格字符

java - JWT 组件信息