我想使用Lucene将文档与大量加权标记一起索引(权重为真实的概率)。这些字段都将被称为“标记”,以允许搜索以这些标记为目标,并返回具有匹配标记但概率最高的文档。
以下代码仅显示了我想要做的更清晰的事情。
但是,Lucene中的字段提升意味着应用于索引字段和字段类型,而不是应用于添加到文档中的实例。这意味着,下面的解决方案不起作用,我需要使用具有唯一名称的字段,以便对它们应用提升。
我也知道这是一个非常糟糕的解决方案,我想知道这里有人知道更好的方法。我显然需要a)存储概率,b)有办法在检索过程中使用它们。
private void indexDocuments(IndexWriter writer) throws IOException {
Document docA = new Document();
Field pathFieldA = new StringField("path", "dog.jpg", Field.Store.YES);
docA.add(pathFieldA);
// add all tags to the index
StringField c1 = new StringField("tag", "dog", Field.Store.YES);
c1.setBoost(0.8f);
docA.add(c1);
StringField c2 = new StringField("tag", "cat", Field.Store.YES);
c2.setBoost(0.2f);
docA.add(c2);
Document docB = new Document();
Field pathFieldB = new StringField("path", "cat.jpg", Field.Store.YES);
docB.add(pathFieldB);
// add all tags to the index
StringField tagB1 = new StringField("tag", "dog", Field.Store.YES);
tagB1.setBoost(0.2f);
docB.add(tagB1);
StringField tagB2 = new StringField("tag", "cat", Field.Store.YES);
tagB2.setBoost(0.8f);
docB.add(tagB2);
writer.addDocument(docB);
writer.addDocument(docB);
}