Lucene:有什么方法可以知道哪些子查询命中了文档?

时间:2014-11-27 13:49:01

标签: java search lucene

我有一个像这样创建的MemoryIndex。

```
        Version version = Version.LUCENE_47;
        Analyzer analyzer = new SimpleAnalyzer(version);
        MemoryIndex index = new MemoryIndex();
        index.addField("text", "Readings about Salmons and other select Alaska fishing Manuals", analyzer);
```

然后,我有一个查询,其中包含从一组概念(包括id,name,description)创建的多个子查询。现在我必须循环每个概念,生成一个查询,最后检查它是否匹配=>如果是,我将它附加到用于存储匹配的字符串

```
for (Concept concept : concepts) {
    Query query = queryGenerator.getQueryForConcept(concept);
    float score = query != null ? index.search(query) : 0.0f;
    if (score > 0) {
        matches.append(sep + concept.getId() + "|" + concept.getName());
        sep = "|";
    }
}```

问题是:概念的数量越来越大,这会影响性能。无论如何,我可以创建一个单一的查询并与文档进行比较,并找出哪些概念已被文档击中? 我尝试使用BooleanQuery作为一个整体,然后将所有来自概念的子查询添加到其中。它匹配,但不知道哪个子查询命中,即使我们这样做,我们如何把详细信息放在" id"和" name"一个概念到它? 非常感谢所有答案

0 个答案:

没有答案