gpt4 book ai didi

java - 如何将lucene36转移到lucene 40

转载 作者:太空宇宙 更新时间:2023-11-04 15:00:33 24 4
gpt4 key购买 nike

这是代码:

 public int docsContainTerm(Term tm) throws IOException {
TermDocs termDocs = indexReader.termDocs(tm);
//DocsEnum termDocs = indexReader.
int count = 0;
while (termDocs.next()) {
if (indexReader.docFreq(tm) != 0) {
count++;
}
}
return count;
}

public int tf(Term tm, String docName) throws IOException {
TermDocs termDocs = indexReader.termDocs(tm);
while (termDocs.next()) {
Document doc = indexReader.document(termDocs.doc());
if (doc.get("filename").equals(docName)) {
return termDocs.freq();
}
}
return 0;
}
public static void main(String[] args) throws CorruptIndexException, IOException {
String indexDir = "indexDir";
String docs = "docs";
String query = "KENNEDY ADMINISTRATION PRESSURE ON NGO DINH DIEM TO STOP SUPPRESSING THE BUDDHISTS";
Directory dir = FSDirectory.open(new File(indexDir));
IndexReader indexReader = IndexReader.open(dir);
BM25 bm25 = new BM25(indexReader, docs);
System.out.println(bm25.getContent("171"));
System.out.println(bm25.htmlGetContent("171", query.toLowerCase()));
}

}

我搜索了一些相关内容,有人说我应该将 TermDocs 更改为 DocsEnum,但我不知道如何更改。这是错误:线程“main”java.lang.Error 中出现异常: Unresolved 编译问题:

at BM25.main(BM25.java:269)

最佳答案

来自Apache Lucene Migration Guide ,

  1. 术语现在本质上是二进制的(任意 byte[]),由 BytesRef 类表示(它提供了现有 byte[] 中的偏移量 + 长度“切片”)。

  2. 字段是根据每个字段中的术语 (TermEnum) 单独枚举的 (Fields.iterator())。

  3. TermDocs 已重命名为 DocsEnum。

  4. TermPositions 已重命名为 DocsAndPositionsEnum,并且不再扩展仅文档枚举器 (DocsEnum)。

  5. 已删除的文档不再从文档/位置枚举中隐式过滤。相反,在获取枚举时,您传递一个 BitsskipDocs(设置的位被跳过)。此外,您现在可以向读者询问其已删除的文档。

  6. 文档/位置枚举无法查找术语。相反,TermsEnum 能够进行查找,然后您可以从该TermsEnum 请求文档/职位枚举。

  7. TermsEnum 的查找方法返回更多信息。

  8. TermsEnum 有一个 ord() 方法,返回未定位到的术语的长数字序数(即第一项是 0,下一项是 1,依此类推)。还有相应的seek(long ord)方法。请注意,这些方法是可选的;特别是 MultiFieldsTermEnum 没有实现它们。

  9. 获取枚举的方式已更改。主要入口点是 Fields 类。 DocsAndPositionsEnum 也是如此。

关于java - 如何将lucene36转移到lucene 40,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22615627/

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