我有以下情况我有一组要索引的文档。但我需要在我索引的内容中有所选择。
选择标准:文档必须包含给定的关键字之一Set
。
这部分很简单,我可以检查文档中是否存在任何这些关键字,然后才索引文档。棘手的情况是(无论如何对我来说!),我只想索引这些关键字。这些关键字可以是多字词,也可以是正则表达式。
这些关键字将是什么对这篇文章毫无意义,因为我可以将其抽象出来——我可以生成需要索引的关键字列表。
我可以使用现有的 TokenStream、Analyzer、Filter 组合吗?如果没有,请有人指出我正确的方向。
如果我的问题不够清楚:
HashSet<String> impKeywords = new HashSet<String>(new String[] {"Java", "Lucene"});
我有一个Content
我使用的类,说:
Content content = new Content("I am only interested in Java, Lucene, Nutch, Luke, CommonLisp.");
并且,假设我有一种获取匹配关键字的方法:
HashSet<String> matchingKeywords = content.getMatchingKeywords(impKeywords); // returns a set with "Java" and "Lucene"
如果有matchingKeywords,才继续对文档进行索引;所以:
if(!matchingKeywords.isEmpty()) {
// prepare document for indexing, and index.
// But what should be my Analyzer and TokenStream?
}
我希望能够创建一个带有只返回这些匹配关键字的 TokenStream 的分析器,因此只有这些标记被索引。
尾注:一种可能性似乎是,对于每个文档,我使用每个匹配的关键字添加可变数量的字段。这些字段被索引但不使用 分析Field.Index.NOT_ANALYZED
。但是,如果我能够为此目的找出一个预先存在的 Analyzer/TokenStream 而不是玩弄字段会更好。