Java 在从Lucene 3.6更新到Lucene 4.1时,字段似乎已成为二进制字段

Java 在从Lucene 3.6更新到Lucene 4.1时,字段似乎已成为二进制字段,java,lucene,Java,Lucene,将代码从Lucene 3.6转换为Lucene 4.1后出现奇怪的测试失败 public void testIndexPuid() throws Exception { addReleaseOne(); RAMDirectory ramDir = new RAMDirectory(); createIndex(ramDir); IndexReader ir = IndexReader.open(ramDir);

将代码从Lucene 3.6转换为Lucene 4.1后出现奇怪的测试失败

public void testIndexPuid() throws Exception {

        addReleaseOne();
        RAMDirectory ramDir = new RAMDirectory();
        createIndex(ramDir);

        IndexReader ir = IndexReader.open(ramDir);
        Fields fields = MultiFields.getFields(ir);
        Terms terms = fields.terms("puid");
        TermsEnum termsEnum = terms.iterator(null);
        termsEnum.next();
        assertEquals("efd2ace2-b3b9-305f-8a53-9803595c0e38", termsEnum.term());
    }
返回:

预计:efd2ace2-b3b9-305f-8a53-9803595c0e38 实际数字:[65 66 64 32 61 63 32 2d 62 33 62 39 2d 33 30 35 66 2d 38 61 35 33 2d 39 30 33 35 35 35 63 30 65 33 38]

它似乎是以二进制字段而不是文本字段的形式添加字段,但我检查了,该字段是使用不推荐的

新字段(“puid”,值,Field.Index.NOT\u analysis\u NO\u normals,new KeywordAnalyzer())


那么,这不应该像以前一样工作吗?

Doh,我最糟糕的缺失utf8ToString(),行应该是:assertEquals(“efd2ace2-b3b9-305f-8a53-9803595c0e38”,termsEnum.term().utf8ToString());-Paul Taylor 2月19日22时20分,我最糟糕的缺失utf8ToString(),行应该是:assertEquals(“efd2ace2-b3b9-305f-8a53-9803595c0e38”,termsEnum.term().utf8ToString());