Lucene 4.x - 从索引中的每个doc读取文件名/唯一ID字段

时间:2016-04-10 15:32:50

标签: java indexing lucene filenames

我有一系列文档,我正在使用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 个答案:

没有答案