4 个解决方案
#1
怎么不能存储。再大也可以存储,lucene的优点就是查找。
创建了索引之后,用IndexSearch 和Query 借口去实现啊。。
创建了索引之后,用IndexSearch 和Query 借口去实现啊。。
#2
Document document = new Document();
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"));这样应该可以啊
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"));这样应该可以啊
#3
上面的temp就是文档解析出来的内容String
#4
我明白您的意思,可是我的问题就是在这边。
我的文档是一个文件夹里的多个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));
麻烦您再指教一下,谢谢啦~~
#1
怎么不能存储。再大也可以存储,lucene的优点就是查找。
创建了索引之后,用IndexSearch 和Query 借口去实现啊。。
创建了索引之后,用IndexSearch 和Query 借口去实现啊。。
#2
Document document = new Document();
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"));这样应该可以啊
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"));这样应该可以啊
#3
上面的temp就是文档解析出来的内容String
#4
我明白您的意思,可是我的问题就是在这边。
我的文档是一个文件夹里的多个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));
麻烦您再指教一下,谢谢啦~~