Mailing List Archive

cvs commit: jakarta-lucene-sandbox/contributions/javascript/queryValidator luceneQueryValidator.js
kelvint 02/05/08 08:56:58

Added: contributions/javascript/queryValidator
luceneQueryValidator.js
Log:
Initial commit of javascript lucene query validator.
This is the version from http://marc.theaimsgroup.com/?l=lucene-user&m=101964415222254&w=2.
I'm so glad its finally been rescued from the depths of mailing list archives!

Revision Changes Path
1.1 jakarta-lucene-sandbox/contributions/javascript/queryValidator/luceneQueryValidator.js

Index: luceneQueryValidator.js
===================================================================
//
// JavaScript Lucene Query Validator
// Author: Kelvin Tan (kelvin@relevanz.com)
// Date: 10/04/2002

// validates a lucene query.
// @param Form field that contains the query
function doCheckLuceneQuery(queryField)
{
var query = queryField.value;
if(query != null && query.length > 0)
{
var matches = query.match(/^(\*)|([^a-zA-Z0-9_]\*)/);

// check wildcards are used properly
if(matches != null && matches.length > 0)
{
alert("Invalid search query! The wildcard (*) character must be preceded by at least one alphabet or number. Please try again.")
return false;
}

// check parentheses are used properly
matches = query.match(/^([^\n()]*|(\(([a-zA-Z0-9_+\-:()\" ]|\*)+\)))*$/);
if(matches == null || matches.length == 0)
{
alert("Invalid search query! Parentheses must contain at least one alphabet or number. Please try again.")
return false;
}

// check '+' and '-' are used properly
matches = query.match(/^(([^\n+-]*|[+-]([a-zA-Z0-9_:()]|\*)+))*$/);
if(matches == null || matches.length == 0)
{
alert("Invalid search query! '+' and '-' modifiers must be followed by at least one alphabet or number. Please try again.")
return false;
}

// check that quote marks are closed
matches = query.match(/\"/g);
if(matches != null)
{
var number = matches.length;
if((number % 2) > 0)
{
alert("Invalid search query! Please close all quote (\") marks.");
return false;
}
}

// check ':' is used properly
matches = query.match(/^(([^\n:]*|([a-zA-Z0-9_]|\*)+[:]([a-zA-Z0-9_()"]|\*)+))*$/);
if(matches == null || matches.length == 0)
{
alert("Invalid search query! Field declarations (:) must be preceded by at least one alphabet or number and followed by at least one alphabet or number. Please try again.")
return false;
}

return true;
}
}




--
To unsubscribe, e-mail: <mailto:lucene-dev-unsubscribe@jakarta.apache.org>
For additional commands, e-mail: <mailto:lucene-dev-help@jakarta.apache.org>