用lucene建立索引然后搜索的时候,一般为文档的路径,文档名称,还有文档内容建立索引,但是一般文档内容是不存储的,如下代码所示doc.add(new Field("contents", new FileReader(files[i]));对文件的内容建立索引,但是不存储。这样子搜索完了之后怎么返回文件内容呢,无法返回文件内容。System.out.println(doc.get("contents"));返回的总是null;但是文档的内容很大,建立索引的时候不可能将文档的内容设置为存储的,那要怎么做才能返回文档的内容呢~??请各位大侠帮忙一下~~
创建了索引之后,用IndexSearch 和Query 借口去实现啊。。
Field FieldPath = new Field("path",path,
Field.Store.YES, Field.Index.NO);
Field FieldBody = new Field("body", temp, Field.Store.YES,
Field.Index.ANALYZED,
Field.TermVector.WITH_POSITIONS_OFFSETS);
document.add(FieldPath);
document.add(FieldBody);
indexWriter.addDocument(document);
查询:QueryParser qp = new QueryParser(Version.LUCENE_30,"body", analyzer);
System.out.println("contents:"+document.get("body"));这样应该可以啊
我的文档是一个文件夹里的多个txt文档,而且每个文档都很大,都有300多M,这个temp该怎么表示呢?这个temp还是string类型的。我用下面的代码读取,但是会出现内存溢出的情况,不能实现呢。
FileInputStream fis = new FileInputStream(files[i]);
String content = "";
BufferedReader reader = new BufferedReader(new InputStreamReader(fis));
StringBuffer buffer = new StringBuffer("");
content = reader.readLine();
while (content != null) {
buffer.append(content);
content = reader.readLine();
}
doc.add(new Field("content",buffer.toString(),Field.Store.YES,Field.Index.ANALYZED));麻烦您再指教一下,谢谢啦~~