changeset 1619:83caee2ed4ad

Lucene.escape
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 25 Jul 2021 18:50:14 -0600
parents a37ffe2d1b14
children 99a8ac891914
files src/goodjava/lucene/queryparser/GoodQueryParser.java src/goodjava/lucene/queryparser/StringFieldParser.java src/luan/modules/lucene/Lucene.luan
diffstat 3 files changed, 12 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/src/goodjava/lucene/queryparser/GoodQueryParser.java	Mon Jun 14 18:45:17 2021 -0600
+++ b/src/goodjava/lucene/queryparser/GoodQueryParser.java	Sun Jul 25 18:50:14 2021 -0600
@@ -19,7 +19,7 @@
 		return new GoodQueryParser(fieldParser,query).parseQuery();
 	}
 
-	public static String quote(String s) {
+	public static String escape(String s) {
 		s = s.replace("\\","\\\\");
 		s = s.replace("\b","\\b");
 		s = s.replace("\f","\\f");
@@ -27,7 +27,7 @@
 		s = s.replace("\r","\\r");
 		s = s.replace("\t","\\t");
 		s = s.replace("\"","\\\"");
-		return "\""+s+"\"";
+		return s;
 	}
 
 	public static Sort parseSort(FieldParser fieldParser,String sort) throws ParseException {
@@ -194,7 +194,7 @@
 		String match = Unquoted(NOT_IN_FIELD);
 		if( match.length()==0 )
 			return parser.failure((String)null);
-		match = StringFieldParser.escape(this,match);
+		match = StringFieldParser.unescape(this,match);
 		return parser.success(match);
 	}
 
--- a/src/goodjava/lucene/queryparser/StringFieldParser.java	Mon Jun 14 18:45:17 2021 -0600
+++ b/src/goodjava/lucene/queryparser/StringFieldParser.java	Sun Jul 25 18:50:14 2021 -0600
@@ -31,7 +31,7 @@
 			return new WildcardQuery(new Term(field,wildcard));
 		if( query.endsWith("*") && !query.endsWith("\\*") )
 			return new PrefixQuery(new Term(field,query.substring(0,query.length()-1)));
-		query = escape(qp,query);
+		query = unescape(qp,query);
 		PhraseQuery pq = new PhraseQuery();
 		try {
 			TokenStream ts = analyzer.tokenStream(field,new StringReader(query));
@@ -55,12 +55,12 @@
 	}
 
 	@Override public Query getRangeQuery(GoodQueryParser qp,String field,String minQuery,String maxQuery,boolean includeMin,boolean includeMax) throws ParseException {
-		minQuery = minQuery.equals("*") ? null : escape(qp,minQuery);
-		maxQuery = maxQuery.equals("*") ? null : escape(qp,maxQuery);
+		minQuery = minQuery.equals("*") ? null : unescape(qp,minQuery);
+		maxQuery = maxQuery.equals("*") ? null : unescape(qp,maxQuery);
 		return TermRangeQuery.newStringRange(field,minQuery,maxQuery,includeMin,includeMax);
 	}
 
-	static String escape(GoodQueryParser qp,String s) throws ParseException {
+	static String unescape(GoodQueryParser qp,String s) throws ParseException {
 		final char[] a = s.toCharArray();
 		int i, n;
 		if( a[0] == '"' ) {
--- a/src/luan/modules/lucene/Lucene.luan	Mon Jun 14 18:45:17 2021 -0600
+++ b/src/luan/modules/lucene/Lucene.luan	Sun Jul 25 18:50:14 2021 -0600
@@ -59,7 +59,11 @@
 	double = NumberFieldParser.DOUBLE
 }
 
-Lucene.quote = GoodQueryParser.quote
+local escape = GoodQueryParser.escape
+Lucene.escape = escape
+function Lucene.quote(s)
+	return [["]]..escape(s)..[["]]
+end
 
 local function get_file(f,name)
 	type(f)=="table" or error(name.." must be table")