在索引从数据库中读取的文档时的转码问题

xxwang1984 2008-07-09
环境:lucene2.0+pdfbox0.7.3+oracle10.2
中文分词jar包是IKAnalyzer.jar,很常用的。

我把文档以ordsys.orddoc类型存储的oracle数据库中,可以获取到数据的byte[]和inputstream,
InputStream is = ordDoc.getDataInStream();//获取inputstream
Document doc = LucenePDFDocument.getDocument(is);
byte[] b = ordDoc.getDataInByteArray();
doc.add(new Field("nr", new String(b),Field.Store.YES, Field.Index.TOKENIZED));

索引时,没有报错,但就是关键字检索不出来,请问这可能是什么原因造成的?
moshalanye 2008-07-10
你用的操作系统是什么的? 操作系统有自己的默认的字符集编码,windows 中默认的是GBK 或是 GBK的超集(就是包含了GBK和一些扩展的字符集),在数据库里面也有字符集,   如果你的信息在数据库中不是乱码,那么你的数据中的数据  就是使用数据库的编码格式     你的字节流拿到的也是那种编码格式的字节流    而在读取这个字节流的时候 的 reader 要把东西呈现 就必须使用正确的  编码格式  才会出现正确的的东东       new String(b)  这个操作是会让 java 使用操作系统的默认字符集,  假设你的数据库是  utf-8  那么这边 就应该使   new String(b,"UTF-8")
你的编码不对    分词也就必然有问题(分的都是乱码)   但是这个不会抱错    你输入的是正常的东西  当然查不到了   最好  你每次做的时候 在控制台打出来 先 看看 这样就好确认  没问题了      建索引的时候 输出来看一次   
xxwang1984 2008-07-11
谢谢楼上,给出一个解决问题的思路。
Global site tag (gtag.js) - Google Analytics