var INDEX_DIR = "/home/steve/dev/mozilla/extensions/xpclucene/test/clucene_docs"; var DOCS_DIR = "/home/steve/dev/mozilla/extensions/xpclucene/test/docs"; var XPCLUCENESERVICE_CONTRACTID = "@skrul.com/xpclucene;1"; var service = Components.classes[XPCLUCENESERVICE_CONTRACTID].getService(Components.interfaces.nsILuceneFactory); var analyzer = service.getAnalyzer(0); var writer = service.getIndexWriterFromPath(INDEX_DIR, analyzer, true, true); var file = Components.classes["@mozilla.org/file/local;1"].createInstance(Components.interfaces.nsILocalFile); file.initWithPath(DOCS_DIR); var fields = []; var docs = []; var entries = file.directoryEntries; while(entries.hasMoreElements()) { var entry = entries.getNext(); entry.QueryInterface(Components.interfaces.nsIFile); print("Adding " + entry.path); var data = ""; var fstream = Components.classes["@mozilla.org/network/file-input-stream;1"].createInstance(Components.interfaces.nsIFileInputStream); var sstream = Components.classes["@mozilla.org/scriptableinputstream;1"].createInstance(Components.interfaces.nsIScriptableInputStream); fstream.init(entry, 1, 0, false); sstream.init(fstream); var str = sstream.read(-1); while (str.length > 0) { data += str; str = sstream.read(-1); } sstream.close(); fstream.close(); var doc = service.createDocument(); docs.push(doc); var field = service.createTextStringField("content", data, true); fields.push(field); doc.add(field); writer.addDocument(doc); } writer.close(); var reader = service.getIndexReaderFromPath(INDEX_DIR); var analyzer = service.getAnalyzer(0); var query = service.parseQuery("washington", "content", analyzer); var indexSearcher = service.getIndexSearcher(reader); var hits = indexSearcher.search(query); for(var i = 0; i < hits.length(); i++) { var doc = hits.doc(i); print("Hit " + i + ": score " + hits.score(i) + ", id " + hits.id(i) + ", content: " + doc.get("content").substr(0, 20)); } reader.close();