diff src/luan/modules/lucene/LuceneIndex.java @ 1335:e0cf0d108a77

major cleanup
author Franklin Schmidt <fschmidt@gmail.com>
date Thu, 14 Feb 2019 03:10:45 -0700
parents 25746915a241
children 8b61c8c4e07a
line wrap: on
line diff
--- a/src/luan/modules/lucene/LuceneIndex.java	Tue Feb 12 22:53:57 2019 -0700
+++ b/src/luan/modules/lucene/LuceneIndex.java	Thu Feb 14 03:10:45 2019 -0700
@@ -200,7 +200,7 @@
 			for( Map.Entry<String,LuanFunction> entry : map.entrySet() ) {
 				String name = entry.getKey();
 				LuanFunction fn = entry.getValue();
-				Object value = Luan.first(fn.call(luan,new Object[]{doc}));
+				Object value = Luan.first(fn.call(doc));
 				doc.put( name, value );
 				indexedOnlySet.add(name);
 			}
@@ -230,11 +230,11 @@
 		}
 	}
 
-	public void update_in_transaction(Luan luan,LuanFunction fn) throws IOException, LuanException {
+	public void update_in_transaction(LuanFunction fn) throws IOException, LuanException {
 		boolean commit = !writeLock.isHeldByCurrentThread();
 		writeLock.lock();
 		try {
-			fn.call(luan);
+			fn.call();
 			if(commit) writer.commit();
 		} finally {
 			wrote();
@@ -242,13 +242,13 @@
 		}
 	}
 
-	public void run_in_lock(Luan luan,LuanFunction fn) throws IOException, LuanException {
+	public void run_in_lock(LuanFunction fn) throws IOException, LuanException {
 		if( writeLock.isHeldByCurrentThread() )
 			throw new RuntimeException();
 		writeLock.lock();
 		try {
 			synchronized(this) {
-				fn.call(luan);
+				fn.call();
 			}
 		} finally {
 			wrote();
@@ -318,7 +318,7 @@
 		try {
 			String dir = fileDir.toString();
 			LuanTable fileNames = new LuanTable(luan,new ArrayList(ic.getFileNames()));
-			return fn.call(luan,new Object[]{dir,fileNames});
+			return fn.call(dir,fileNames);
 		} finally {
 			snapshotDeletionPolicy.release(ic);
 		}
@@ -352,13 +352,14 @@
 		final IndexSearcher searcher;
 		int docID;
 
-		DocFn(IndexSearcher searcher) {
+		DocFn(Luan luan,IndexSearcher searcher) {
+			super(luan);
 			this.searcher = searcher;
 		}
 
-		@Override public Object call(Luan luan,Object[] args) throws LuanException {
+		@Override public Object call(Object[] args) throws LuanException {
 			try {
-				return toTable(luan,searcher.doc(docID));
+				return toTable(luan(),searcher.doc(docID));
 			} catch(IOException e) {
 				throw new LuanException(e);
 			}
@@ -413,12 +414,12 @@
 			if( fn!=null && n==null ) {
 				if( sortStr != null )
 					throw new LuanException("sort must be nil when n is nil");
-				final DocFn docFn = new DocFn(searcher);
+				final DocFn docFn = new DocFn(luan,searcher);
 				MyCollector col = new MyCollector() {
 					@Override public void collect(int doc) {
 						try {
 							docFn.docID = docBase + doc;
-							fn.call(luan,new Object[]{++i,docFn});
+							fn.call(++i,docFn);
 						} catch(LuanException e) {
 							throw new LuanRuntimeException(e);
 						}
@@ -439,10 +440,10 @@
 			Sort sort = sortStr==null ? null : SaneQueryParser.parseSort(mfp,sortStr);
 			TopDocs td = sort==null ? searcher.search(query,n) : searcher.search(query,n,sort);
 			final ScoreDoc[] scoreDocs = td.scoreDocs;
-			DocFn docFn = new DocFn(searcher);
+			DocFn docFn = new DocFn(luan,searcher);
 			for( int i=0; i<scoreDocs.length; i++ ) {
 				docFn.docID = scoreDocs[i].doc;
-				fn.call(luan,new Object[]{i+1,docFn});
+				fn.call(i+1,docFn);
 			}
 			return td.totalHits;
 		} finally {
@@ -451,13 +452,13 @@
 		}
 	}
 
-	public Object search_in_transaction(Luan luan,LuanFunction fn) throws LuanException, IOException {
+	public Object search_in_transaction(LuanFunction fn) throws LuanException, IOException {
 		if( threadLocalSearcher.get() != null )
 			throw new LuanException("can't nest search_in_transaction calls");
 		IndexSearcher searcher = openSearcher();
 		threadLocalSearcher.set(searcher);
 		try {
-			return fn.call(luan);
+			return fn.call();
 		} finally {
 			threadLocalSearcher.set(null);
 			close(searcher);
@@ -588,14 +589,14 @@
 		}
 	};
 
-	public LuanFunction highlighter(Luan luan,String queryStr,LuanFunction formatter,final Integer fragmentSize,String dotdotdot) throws ParseException {
+	public LuanFunction highlighter(String queryStr,LuanFunction formatter,final Integer fragmentSize,String dotdotdot) throws ParseException {
 		Query query = SaneQueryParser.parseQuery(mfp,queryStr);
 		Formatter fmt = new Formatter() {
 			public String highlightTerm(String originalText,TokenGroup tokenGroup) {
 			if( tokenGroup.getTotalScore() <= 0 )
 					return originalText;
 				try {
-					return (String)Luan.first(formatter.call(luan,new Object[]{originalText}));
+					return (String)Luan.first(formatter.call(originalText));
 				} catch(LuanException e) {
 					throw new LuanRuntimeException(e);
 				}
@@ -607,8 +608,8 @@
 			chooser.setTextFragmenter( new SimpleSpanFragmenter(queryScorer,fragmentSize) );
 		final Highlighter hl = new Highlighter(fmt,queryScorer);
 		hl.setTextFragmenter( new NullFragmenter() );
-		return new LuanFunction() {
-			@Override public String call(Luan luan,Object[] args) throws LuanException {
+		return new LuanFunction(false) {  // ???
+			@Override public String call(Object[] args) throws LuanException {
 				String text = (String)args[0];
 				try {
 					if( chooser != null ) {