在索引从数据库中读取的文档时的转码问题
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
谢谢楼上,给出一个解决问题的思路。
|