Java Lucene:如何存储文件内容?
我正在尝试索引和存储文件内容(纯文本),但使用这种方式似乎是不可能的:Java Lucene:如何存储文件内容?,java,lucene,Java,Lucene,我正在尝试索引和存储文件内容(纯文本),但使用这种方式似乎是不可能的: protected Document getDocument(File f) throws Exception { Document doc = new Document(); Field contents = new Field("contents", new FileReader(f)); Field filename = new Field("filename", f.getName(), Field.St
protected Document getDocument(File f) throws Exception {
Document doc = new Document();
Field contents = new Field("contents", new FileReader(f));
Field filename = new Field("filename", f.getName(), Field.Store.YES, Field.Index.ANALYZED);
doc.add(contents);
return doc;
}
如何存储纯文本文件的内容(没有任何标记)?看看ApacheTika(http://tika.apache.org/). 他们有一个很好的库,可以从HTML和其他结构化文档中提取文本。这将有助于从HTML中提取文本
至于存储在lucene索引中,根据您的需要,您可以在存储之前去掉标记。或者,您可以使用它创建一个分析器,以便在索引时显示标记。看看ApacheTika(http://tika.apache.org/). 他们有一个很好的库,可以从HTML和其他结构化文档中提取文本。这将有助于从HTML中提取文本
至于存储在lucene索引中,根据您的需要,您可以在存储之前去掉标记。或者,您可以使用它创建一个分析器,以便在索引时显示标记。只需读取文件内容并使用另一个字段构造函数,如
protected Document getDocument(File f) throws Exception {
Document doc = new Document();
Field contents = new Field("contents", new Scanner(f).useDelimiter("\\A").next(), Store.YES, Index.NO); // you should actually close the scanner
Field filename = new Field("filename", f.getName(), Store.YES, Index.ANALYZED);
doc.add(contents);
doc.add(filename);
return doc;
}
只需读取文件内容并使用另一个字段构造函数,如
protected Document getDocument(File f) throws Exception {
Document doc = new Document();
Field contents = new Field("contents", new Scanner(f).useDelimiter("\\A").next(), Store.YES, Index.NO); // you should actually close the scanner
Field filename = new Field("filename", f.getName(), Store.YES, Index.ANALYZED);
doc.add(contents);
doc.add(filename);
return doc;
}