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;
}