forked from nikopol/querytext.js
-
Notifications
You must be signed in to change notification settings - Fork 0
linkfluence/querytext.js
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
querytext.js 0.6 (c) 2012-2013 niko
test or highlight if a text/html matches a boolean query
supported query syntax:
- AND (including + leading character)
- OR (including | character)
- NOT (including leading ! or - charaters),
- parenthesis
- left and right truncatures (with * character)
- "quotes" for exact matching
constructors:
querytext() // get empty querytext object
querytext("query") // get querytext object with a parsed query
querytext({ // get an object object with options:
sensisitive: false,// case sensitive (default=false)
wholeword: true, // whole word only (default=true)
unaccent: true, // accent unsensitive (default=true)
matches: false, // want matched words with their position
debug: false, // console debugging ouput (default=false)
query: "query" // query string
}) // return a querytext object
querytext object methods:
parse('query'); //return {error:"msg",pos:12} or the
//querytext object
normalize(); //return the normalized query as string
match('text'); //test if the text match the query
//if matches flag is true =>
// return { word:[pos1,pos2], ... } or false
//if matches flag is false =>
// return true or false
dump(); //return a string dump of the query tree
//(called after match, its include each
// nodes results)
highlight('text','before','after',ishtml)
//highlight a text with the query, inserting
//'before' and 'after' around each matching node.
//important: option "matches" must have been set
//to use this function.
//return the text higlighted
highlightml(DOMelement,'before','after')
//highlight a DOM tree with the query, inserting
//'before' and 'after' around each matching node.
//important: option "matches" must have been set
//to use this function.
//return the DOMelement higlighted
match usages:
querytext('!!tata').match('toto TaTa TITI'); //-> true
querytext('--zaza').match('toto TaTa TITI'); //return false
querytext('NOT NOT zaza').match('toto ZaZa TITI'); //-> true
querytext('-tata').match('toto TaTa TITI'); //-> false
querytext('toto AND "TATA TITI"').match('toto TaTa TITI'); //-> true
querytext('toto +"TATA TITI"').match('toto TaTa TITI'); //-> true
querytext({
query: "T",
matches: true,
wholeword: false
}).match("toto") //-> {t:[0,2]}
analysis usages:
var qt = querytext('toto AND (tata OR zizi)'); //-> querytext object
qt.match('toto TaTa TITI'); //-> true
console.log(qt.dump()); //output the following dump
AND = true
| "toto" = true
| OR = true : (tata OR zizi)
| | "tata" = true
| | "zizi"
normalization usages:
querytext('toto tata').normalize() //-> "toto OR tata"
querytext('to -ta ti').normalize() //-> "(to AND NOT ta) OR ti"
highlight usages:
querytext({query:"zob",matches:true})
.highlight("<span class='zob'>zob</span>","[","]")
//-> "<span class='[zob]'>[zob]</span>"
querytext({query:"zob",matches:true})
.highlight("<span class='zob'>zob</span>","[","]",true)
//-> "<span class='zob'>[zob]</span>"
=========================================================================
LICENSE
=========================================================================
DO WHAT THE FUCK YOU WANT WITH
ESPECIALLY IF YOU OFFER ME A BEER
PUBLIC LICENSE
Version 1, March 2012
Copyright (C) 2012 - niko
Everyone is permitted to copy and distribute verbatim
or modified copies of this license document, and
changing it is allowed as long as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC
ESPECIALLY IF YOU OFFER ME A BEER LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND
MODIFICATION :
- You just DO WHAT THE FUCK YOU WANT.
- Especially if you offer me a beer.
About
test if a text match a boolean query
Resources
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published