有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Lucene 4。x从索引中的每个文档读取文件名/唯一ID字段

我有一系列的文档,我正在用Lucene编制索引,据我所知,索引是正确创建的。我想将文件名字符串存储在每个文档的索引中,然后在我提取相似性分数时从索引中读取文件名字段,这样我就可以知道哪个文档是哪个文档。不幸的是,到目前为止,我所尝试的一切都不起作用,要么是因为它是针对Lucene的另一个版本,要么(也许?)因为它与我设置字段/文档的方式不兼容

“我的文件名”字段的存储方式如下:

    for (File f : sourceDirectory.listFiles()) {
        ...
        FieldType docFNfieldType = new FieldType();
        docFNfieldType.setIndexed(true);
        docFNfieldType.setStored(true);
        docFNfieldType.setStoreTermVectors(false);
        docFNfieldType.setTokenized(false);
        String docfilename = f.getName(); 
        Field docFN = new Field("filename", docfilename, docFNfieldType);
        doc.add(docFN);
        ...

我交替尝试了以下每种方法(没有列出每种方法的所有代码,因为否则一篇文章就太多了):

* String[] allIDs = FieldCache.DEFAULT.getTerms()  //with (int docNum / indexReader, string field)
* String[] allIDs = FieldCache.DEFAULT.getStrings()
* String the_filename = hitDoc.getFieldable("filename").stringValue();
* TermEnum te = indexSearcher.Terms(new Term("fieldx"));
* Terms idnum = indexReader.getTermVector(docId, "filename");  //only when setTermVector is true, but then returns gobbledegook, not the string of the filename

我不知道我还需要做什么,或者我还可以尝试什么,我已经浪费了一个月的时间试图在没有任何可测量的变化的情况下解决这个问题。如有任何帮助或指点,将不胜感激

请让我知道,如果你想要的任何上述部分,我已经尝试了其他代码行。我只是想让这篇文章简洁明了


共 (0) 个答案