学习如何使用Lucene!
我在Lucene中有一个索引,它被配置为存储术语向量。
我还有一组文件,我已经构建了自定义术语向量(用于不相关的目的),不使用Lucene。
有没有办法将它们直接插入到Lucene倒排索引中以代替文档的原始内容?
我想这样做的一种方法是使用带有适当数量的术语出现的术语向量生成伪造文本,然后将伪造文本作为文档的内容提供。这看起来很愚蠢,因为最终的Lucene必须将伪造的文本转换回术语向量才能进行索引。
答案 0 :(得分:0)
我不完全确定你最终要对这些术语向量做什么(得分?只是检索?)但这是我可能提倡的一种策略。
不要专注于伪造术语向量的文本属性,而应考虑查看将{0}附加到每个令牌的任意元数据的payloads。在分析期间,文本将转换为标记。这包括发出关于每个令牌的许多属性。有标准属性,如位置,术语字符偏移和术语字符串本身。所有这些都可以是未反转的术语向量的一部分。另一个属性是payload,它是您可以附加到术语的任意元数据。
您可以存储任何未反转的令牌属性作为"术语向量"包括有效负载,您可以在评分时访问。
要做到这一点,你需要
IndexReader.getTermVector
撤回条款。从那里你可以得到一个TermsEnum。然后,您可以使用它来获取具有当前有效负载的访问者的DocsAndPositionEnum