package railo.runtime.search.lucene2.docs; import java.io.IOException; import java.io.InputStream; import org.apache.lucene.document.Document; import railo.commons.io.IOUtil; import railo.commons.io.res.Resource; import railo.commons.lang.StringUtil; /** A utility for making Lucene Documents from a File. */ public final class PlainDocument { private static final int SUMMERY_SIZE=20; //private static final char FILE_SEPARATOR = System.getProperty("file.separator").charAt(0); /** Makes a document for a File. <p> The document has three fields: <ul> <li><code>path</code>--containing the pathname of the file, as a stored, tokenized field; <li><code>modified</code>--containing the last modified date of the file as a keyword field as encoded by <a href="lucene.document.DateField.html">DateField</a>; and <li><code>contents</code>--containing the full contents of the file, as a Reader field; * @param f * @return matching document * @throws IOException */ public static Document Document(Resource f,String charset) throws IOException { // make a new, empty document Document doc = new Document(); doc.add(FieldUtil.UnIndexed("path", f.getPath())); InputStream is = null; try { is=IOUtil.toBufferedInputStream(f.getInputStream()); String content=IOUtil.toString(is,charset); FieldUtil.setMimeType(doc, "text/plain"); FieldUtil.setRaw(doc,content); FieldUtil.setContent(doc, content); //doc.add(FieldUtil.Text("contents", content.toLowerCase())); FieldUtil.setSummary(doc, StringUtil.max(content,SUMMERY_SIZE),false); } finally { IOUtil.closeEL(is); } //Reader reader = new BufferedReader(new InputStreamReader(is)); // return the document return doc; } private PlainDocument() {} }