gpt4 book ai didi

java - Compass Lucene 来袭

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:56:21 28 4
gpt4 key购买 nike

我在上面使用了 Lucene 和 Compass,但遇到了一个问题:

          try {

CompassHits hits = compassQuery.hits();
for (CompassHit compassHit : hits) {
if (results.size() >= maxResults) {
Log.info(this, "Number of results exceeded %,d for query %s", maxResults, query);
break;
} else {

results.add((T) compassHit.getData());
}
}


}

compassHit.getData()); 获取数据时,命中率为 100,则重新执行搜索,是否有可能将其更改为 200 或更多?

编辑:

来自 wiki apache 组织:

“由于两个原因,迭代所有匹配很慢。首先,当您需要超过 100 个匹配时,返回 Hits 对象的 search() 方法会在内部重新执行搜索”。

我的问题是是否有机会将此值“100”更改为“200”?但重要的是我使用了指南针,也没有使用原始的 Lucene。

最佳答案

我查看了 2.9.2 中 Hits 的源代码。它是硬编码的。看起来像是硬编码的

 Hits(Searcher s, Query q, Filter f) throws IOException {
this.weight = q.weight(s);
this.searcher = s;
this.filter = f;
this.nDeletions = countDeletions(s);
getMoreDocs(50);
this.lengthAtStart = this.length;
}

如果您没有使用 Compass,您可以按照 JavaDoc for Hits 中的说明进行替换

而不是e。 G。可以使用 TopDocCollector 和 TopDocs:

  TopDocCollector collector = new TopDocCollector(hitsPerPage);
searcher.search(query, collector);
ScoreDoc[] hits = collector.topDocs().scoreDocs;
for (int i = 0; i < hits.length; i++) {
int docId = hits[i].doc;
Document d = searcher.doc(docId);
// do something with current hit
...

但既然你是,除非你愿意重写 Compass 的一部分,否则我认为你被卡住了

关于java - Compass Lucene 来袭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4186500/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com