|
|
|
@@ -68,11 +68,13 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
var $defaultlast = 12;
|
|
|
|
|
var $phq;
|
|
|
|
|
var $errmsg = "";
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
*
|
|
|
|
|
* @var boolean
|
|
|
|
|
*/
|
|
|
|
|
var $debug = false;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* un tableau qui contiendra des propositions de thesaurus
|
|
|
|
|
* pour les termes de l'arbre simple
|
|
|
|
@@ -80,12 +82,12 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
* @var array
|
|
|
|
|
*/
|
|
|
|
|
var $proposals = Array("QRY" => "", "BASES" => array());
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Current language for thesaurus
|
|
|
|
|
* @var <type>
|
|
|
|
|
*/
|
|
|
|
|
var $lng = null;
|
|
|
|
|
|
|
|
|
|
protected $unicode;
|
|
|
|
|
|
|
|
|
|
function __construct($lng = "???")
|
|
|
|
@@ -120,7 +122,6 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
$this->proposals = Array("QRY" => "", "BASES" => array());
|
|
|
|
|
$this->phq = $this->mb_trim($phq, 'UTF-8');
|
|
|
|
|
if ($this->phq != "")
|
|
|
|
|
|
|
|
|
|
return($this->maketree(0));
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
@@ -138,18 +139,14 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
{
|
|
|
|
|
case "SIMPLE":
|
|
|
|
|
if (is_array($tree["VALUE"]))
|
|
|
|
|
|
|
|
|
|
return(implode(" ", $tree["VALUE"]));
|
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
return($tree["VALUE"]);
|
|
|
|
|
break;
|
|
|
|
|
case "QSIMPLE":
|
|
|
|
|
if (is_array($tree["VALUE"]))
|
|
|
|
|
|
|
|
|
|
return("\"" . implode(" ", $tree["VALUE"]) . "\"");
|
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
return("\"" . $tree["VALUE"] . "\"");
|
|
|
|
|
break;
|
|
|
|
|
case "PHRASEA_KW_ALL":
|
|
|
|
@@ -157,19 +154,15 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
break;
|
|
|
|
|
case "PHRASEA_KW_LAST":
|
|
|
|
|
if ($tree["PNUM"] !== null)
|
|
|
|
|
|
|
|
|
|
return("" . $tree["VALUE"][0] . "[" . $tree["PNUM"] . "]");
|
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
return($tree["VALUE"][0]);
|
|
|
|
|
break;
|
|
|
|
|
case "OPS":
|
|
|
|
|
case "OPK":
|
|
|
|
|
if (isset($tree["PNUM"]))
|
|
|
|
|
|
|
|
|
|
return("(" . $this->astext($tree["LB"]) . " " . $tree["VALUE"] . "[" . $tree["PNUM"] . "] " . $this->astext($tree["RB"]) . ")");
|
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
return("(" . $this->astext($tree["LB"]) . " " . $tree["VALUE"] . " " . $this->astext($tree["RB"]) . ")");
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
@@ -178,7 +171,6 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
function astable(&$tree)
|
|
|
|
|
{
|
|
|
|
|
$this->calc_complexity($tree);
|
|
|
|
|
// var_dump($tree);
|
|
|
|
|
$txt = "";
|
|
|
|
|
$this->astable2($txt, $tree);
|
|
|
|
|
$txt = "<table border=\"1\">\n<tr>\n" . $txt . "</tr>\n</table>\n";
|
|
|
|
@@ -191,10 +183,8 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
if ($tree)
|
|
|
|
|
{
|
|
|
|
|
if ($tree["CLASS"] == "OPS" || $tree["CLASS"] == "OPK")
|
|
|
|
|
|
|
|
|
|
return($tree["COMPLEXITY"] = $this->calc_complexity($tree["LB"]) + $this->calc_complexity($tree["RB"]));
|
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
return($tree["COMPLEXITY"] = 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@@ -358,7 +348,6 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
function priority_opk(&$tree, $depth = 0)
|
|
|
|
|
{
|
|
|
|
|
if (!$tree)
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
if ($tree["CLASS"] == "OPK" && ($tree["LB"]["CLASS"] == "OPS" || $tree["LB"]["CLASS"] == "OPK"))
|
|
|
|
|
{
|
|
|
|
@@ -377,7 +366,6 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
function distrib_opk(&$tree, $depth = 0)
|
|
|
|
|
{
|
|
|
|
|
if (!$tree)
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
if ($tree["CLASS"] == "OPK" && ($tree["RB"]["CLASS"] == "OPS"))
|
|
|
|
|
{
|
|
|
|
@@ -404,7 +392,6 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
function thesaurus2_apply(&$tree, $bid)
|
|
|
|
|
{
|
|
|
|
|
if (!$tree)
|
|
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
if (($tree["CLASS"] == "SIMPLE" || $tree["CLASS"] == "QSIMPLE") && isset($tree["SREF"]) && isset($tree["SREF"]["TIDS"]))
|
|
|
|
|
{
|
|
|
|
@@ -461,7 +448,6 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
$copy = $tree;
|
|
|
|
|
$this->_extendThesaurusOnTerms($tree, $copy, $useFullText, $useThesaurus, $keepfuzzy, 0, "");
|
|
|
|
|
|
|
|
|
|
// var_dump($tree);
|
|
|
|
|
$this->proposals["QRY"] = "<span id=\"thprop_q\">" . $this->_queryAsHTML($tree) . "</span>";
|
|
|
|
|
|
|
|
|
|
return($copy);
|
|
|
|
@@ -472,7 +458,6 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
if ($depth == 0)
|
|
|
|
|
$ret = $tree;
|
|
|
|
|
if (!$useThesaurus)
|
|
|
|
|
|
|
|
|
|
return; // full-text only : inchangé
|
|
|
|
|
if (($tree["CLASS"] == "SIMPLE" || $tree["CLASS"] == "QSIMPLE"))
|
|
|
|
|
{
|
|
|
|
@@ -607,7 +592,6 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
$this->proposals["BASES"]["b$bid"] = array("BID" => $bid, "NAME" => $name, "TERMS" => array());
|
|
|
|
|
|
|
|
|
|
if (!$tree)
|
|
|
|
|
|
|
|
|
|
return(0);
|
|
|
|
|
|
|
|
|
|
$ambigus = 0;
|
|
|
|
@@ -705,8 +689,6 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
}
|
|
|
|
|
ksort($tsort);
|
|
|
|
|
|
|
|
|
|
// var_dump($tsort);
|
|
|
|
|
|
|
|
|
|
foreach ($tsort as $n)
|
|
|
|
|
{
|
|
|
|
|
$this->propAsHTML($n, $html, $path, $depth + 1);
|
|
|
|
@@ -718,8 +700,6 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
|
|
|
|
|
function _queryAsHTML($tree, $depth = 0)
|
|
|
|
|
{
|
|
|
|
|
// printf("astext : ");
|
|
|
|
|
// var_dump($tree);
|
|
|
|
|
if ($depth == 0)
|
|
|
|
|
{
|
|
|
|
|
$ambiguites = array("n" => 0, "refs" => array());
|
|
|
|
@@ -753,86 +733,20 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
break;
|
|
|
|
|
case "PHRASEA_KW_LAST":
|
|
|
|
|
if ($tree["PNUM"] !== null)
|
|
|
|
|
|
|
|
|
|
return("" . $tree["VALUE"][0] . "[" . $tree["PNUM"] . "]");
|
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
return($tree["VALUE"][0]);
|
|
|
|
|
break;
|
|
|
|
|
case "OPS":
|
|
|
|
|
case "OPK":
|
|
|
|
|
if (isset($tree["PNUM"]))
|
|
|
|
|
|
|
|
|
|
return('(' . $this->_queryAsHTML($tree["LB"], $depth + 1) . ' ' . $tree["VALUE"] . '[' . $tree["PNUM"] . '] ' . $this->_queryAsHTML($tree["RB"], $depth + 1) . ')');
|
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
return('(' . $this->_queryAsHTML($tree["LB"], $depth + 1) . ' ' . $tree["VALUE"] . ' ' . $this->_queryAsHTML($tree["RB"], $depth + 1) . ')');
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
function _queryAsHTML($tree, $mouseCallback="void", $depth=0)
|
|
|
|
|
{
|
|
|
|
|
// printf("astext : ");
|
|
|
|
|
// var_dump($tree);
|
|
|
|
|
if($depth==0)
|
|
|
|
|
{
|
|
|
|
|
$ambiguites = array("n"=>0, "refs"=>array());
|
|
|
|
|
}
|
|
|
|
|
switch($tree["CLASS"])
|
|
|
|
|
{
|
|
|
|
|
case "SIMPLE":
|
|
|
|
|
case "QSIMPLE":
|
|
|
|
|
$w = is_array($tree["VALUE"]) ? implode(" ", $tree["VALUE"]) : $tree["VALUE"];
|
|
|
|
|
$tab = "\n" . str_repeat("\t", $depth);
|
|
|
|
|
if(isset($tree["PATH"]))
|
|
|
|
|
{
|
|
|
|
|
$path = $tree["PATH"];
|
|
|
|
|
if(isset($tree["CONTEXT"]))
|
|
|
|
|
$w .= " [" . $tree["CONTEXT"] . "]";
|
|
|
|
|
$txt = $tab . "<b><span onmouseover=\"return(".$mouseCallback."(event, '$path'));\" onmouseout=\"return(".$mouseCallback."(event, '$path'));\" id=\"thprop_a_".$path."\">";
|
|
|
|
|
$txt .= $tab . "\t\"" . $w . "";
|
|
|
|
|
// $txt .= $tab . "\t<span id='thprop_w_".$path."'></span>\"";
|
|
|
|
|
$txt .= "\"";
|
|
|
|
|
$txt .= $tab . "</span></b>\n";
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
if(isset($tree["CONTEXT"]))
|
|
|
|
|
$w .= "[" . $tree["CONTEXT"] . "]";
|
|
|
|
|
if($tree["CLASS"] == "QSIMPLE")
|
|
|
|
|
$txt = $tab . "\"" . $w . "\"\n";
|
|
|
|
|
else
|
|
|
|
|
$txt = $tab . "" . $w . "\n";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return($txt);
|
|
|
|
|
break;
|
|
|
|
|
case "PHRASEA_KW_ALL":
|
|
|
|
|
return($tree["VALUE"][0]);
|
|
|
|
|
break;
|
|
|
|
|
case "PHRASEA_KW_LAST":
|
|
|
|
|
if($tree["PNUM"]!==null)
|
|
|
|
|
|
|
|
|
|
return("" . $tree["VALUE"][0] . "[" . $tree["PNUM"] . "]");
|
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
return($tree["VALUE"][0]);
|
|
|
|
|
break;
|
|
|
|
|
case "OPS":
|
|
|
|
|
case "OPK":
|
|
|
|
|
if(isset($tree["PNUM"]))
|
|
|
|
|
|
|
|
|
|
return("(" . $this->_queryAsHTML($tree["LB"], $mouseCallback, $depth+1) . " " . $tree["VALUE"] . "[" . $tree["PNUM"] . "] " . $this->_queryAsHTML($tree["RB"], $mouseCallback, $depth+1) . ")");
|
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
return("(" . $this->_queryAsHTML($tree["LB"], $mouseCallback, $depth+1) . " " . $tree["VALUE"] . " " . $this->_queryAsHTML($tree["RB"], $mouseCallback, $depth+1) . ")");
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
function setTids(&$tree, $bid, &$domthe, $searchsynonyms)
|
|
|
|
|
{
|
|
|
|
|
if ($this->debug)
|
|
|
|
@@ -990,10 +904,8 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
function containsColonOperator(&$tree)
|
|
|
|
|
{
|
|
|
|
|
if (!$tree)
|
|
|
|
|
|
|
|
|
|
return(false);
|
|
|
|
|
if ($tree["CLASS"] == "OPK" && $tree["NODETYPE"] == PHRASEA_OP_COLON && ($tree["RB"]["CLASS"] == "SIMPLE" || $tree["RB"]["CLASS"] == "QSIMPLE"))
|
|
|
|
|
|
|
|
|
|
return(true);
|
|
|
|
|
$ret = false;
|
|
|
|
|
if ($tree["CLASS"] == "OPS" || $tree["CLASS"] == "OPK")
|
|
|
|
@@ -1074,14 +986,11 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
if (!$id)
|
|
|
|
|
break; // on a dépassé la racine du thésaurus
|
|
|
|
|
$node->setAttribute("marked", "1");
|
|
|
|
|
// printf("<%s id='%s'<br/>\n", $node->nodeName, $node->getAttribute("id"));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function astext_ambigu($tree, &$ambiguites, $mouseCallback = "void", $depth = 0)
|
|
|
|
|
{
|
|
|
|
|
// printf("astext : ");
|
|
|
|
|
// var_dump($tree);
|
|
|
|
|
if ($depth == 0)
|
|
|
|
|
{
|
|
|
|
|
$ambiguites = array("n" => 0, "refs" => array());
|
|
|
|
@@ -1119,19 +1028,15 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
break;
|
|
|
|
|
case "PHRASEA_KW_LAST":
|
|
|
|
|
if ($tree["PNUM"] !== null)
|
|
|
|
|
|
|
|
|
|
return("" . $tree["VALUE"][0] . "[" . $tree["PNUM"] . "]");
|
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
return($tree["VALUE"][0]);
|
|
|
|
|
break;
|
|
|
|
|
case "OPS":
|
|
|
|
|
case "OPK":
|
|
|
|
|
if (isset($tree["PNUM"]))
|
|
|
|
|
|
|
|
|
|
return("(" . $this->astext_ambigu($tree["LB"], $ambiguites, $mouseCallback, $depth + 1) . " " . $tree["VALUE"] . "[" . $tree["PNUM"] . "] " . $this->astext_ambigu($tree["RB"], $ambiguites, $mouseCallback, $depth + 1) . ")");
|
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
return("(" . $this->astext_ambigu($tree["LB"], $ambiguites, $mouseCallback, $depth + 1) . " " . $tree["VALUE"] . " " . $this->astext_ambigu($tree["RB"], $ambiguites, $mouseCallback, $depth + 1) . ")");
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
@@ -1140,7 +1045,6 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
function get_ambigu(&$tree, $mouseCallback = "void", $depth = 0)
|
|
|
|
|
{
|
|
|
|
|
if (!$tree)
|
|
|
|
|
|
|
|
|
|
return("");
|
|
|
|
|
unset($tree["DEPTH"]);
|
|
|
|
|
if ($tree["CLASS"] == "OPS" || $tree["CLASS"] == "OPK")
|
|
|
|
@@ -1165,17 +1069,14 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
function set_default(&$tree, &$emptyw, $depth = 0)
|
|
|
|
|
{
|
|
|
|
|
if (!$tree)
|
|
|
|
|
|
|
|
|
|
return(true);
|
|
|
|
|
if ($tree["CLASS"] == "OPS" || $tree["CLASS"] == "OPK")
|
|
|
|
|
{
|
|
|
|
|
if ($tree["CLASS"] == "OPS")
|
|
|
|
|
{
|
|
|
|
|
if (!$this->set_default($tree["LB"], $emptyw, $depth + 1))
|
|
|
|
|
|
|
|
|
|
return(false);
|
|
|
|
|
if (!$this->set_default($tree["RB"], $emptyw, $depth + 1))
|
|
|
|
|
|
|
|
|
|
return(false);
|
|
|
|
|
}
|
|
|
|
|
else // OPK !
|
|
|
|
@@ -1283,8 +1184,6 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
|
|
|
|
|
function factor_or2(&$tree, $depth = 0)
|
|
|
|
|
{
|
|
|
|
|
// printf("<hr><b>factor_or depth=%s sur</b><br>", $depth);
|
|
|
|
|
// var_dump($tree);
|
|
|
|
|
$nmodif = 0;
|
|
|
|
|
if ($tree["CLASS"] == "OPS" || $tree["CLASS"] == "OPK")
|
|
|
|
|
{
|
|
|
|
@@ -1302,11 +1201,8 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
$tree["VALUE"][] = $tree["RB"]["VALUE"];
|
|
|
|
|
unset($tree["LB"]);
|
|
|
|
|
unset($tree["RB"]);
|
|
|
|
|
// unset($tree["NODETYPE"]);
|
|
|
|
|
unset($tree["PNUM"]);
|
|
|
|
|
$nmodif++;
|
|
|
|
|
// printf("<hr><b>donne</b><br>");
|
|
|
|
|
// var_dump($tree);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
@@ -1314,13 +1210,11 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
$nmodif += $this->factor_or2($tree["RB"], $depth + 1);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
// printf("<br>return %s<br>", $nmodif);
|
|
|
|
|
return($nmodif);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
function setNumValue(&$tree, SimpleXMLElement $sxml_struct, $depth = 0)
|
|
|
|
|
{
|
|
|
|
|
// var_dump($tree);
|
|
|
|
|
if ($tree["CLASS"] == "OPK")
|
|
|
|
|
{
|
|
|
|
|
if (isset($tree["RB"]) && ($tree["RB"]["CLASS"] == "SIMPLE" || $tree["RB"]["CLASS"] == "QSIMPLE") && ($tree["LB"]["CLASS"] == "SIMPLE" || $tree["LB"]["CLASS"] == "QSIMPLE"))
|
|
|
|
@@ -1383,11 +1277,7 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
"PNUM" => NULL,
|
|
|
|
|
"DEPTH" => 0)
|
|
|
|
|
);
|
|
|
|
|
// var_dump($newTreeLB);
|
|
|
|
|
// print("fin creation branche gauche ( '>=' ) \n");
|
|
|
|
|
## fin creation branche gauche ( ">=" )
|
|
|
|
|
## creation branche droite avec "<="
|
|
|
|
|
// print("creation branche droite avec '<=' \n");
|
|
|
|
|
|
|
|
|
|
$newTreeRB = array("CLASS" => "OPK",
|
|
|
|
|
"VALUE" => "<=",
|
|
|
|
|
"NODETYPE" => PHRASEA_OP_LEQT,
|
|
|
|
@@ -1400,7 +1290,6 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
"PNUM" => NULL,
|
|
|
|
|
"DEPTH" => 0)
|
|
|
|
|
);
|
|
|
|
|
// var_dump($newTreeRB);
|
|
|
|
|
// print("fin creation branche droite avec '<=' \n");
|
|
|
|
|
## fin creation branche droite ( "<=" )
|
|
|
|
|
|
|
|
|
@@ -1413,8 +1302,6 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
"RB" => $newTreeRB);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// et on le retourne
|
|
|
|
|
// var_dump($tree);
|
|
|
|
|
return $tree;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -1585,8 +1472,6 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
function distrib_in(&$tree, $depth = 0)
|
|
|
|
|
{
|
|
|
|
|
$opdistrib = array(PHRASEA_OP_AND, PHRASEA_OP_OR, PHRASEA_OP_EXCEPT, PHRASEA_OP_NEAR, PHRASEA_OP_BEFORE, PHRASEA_OP_AFTER); // ces opérateurs sont 'distribuables' autour d'un 'IN'
|
|
|
|
|
// printf("<hr><b>distrib_in depth=%s sur</b><br>", $depth);
|
|
|
|
|
// var_dump($tree);
|
|
|
|
|
|
|
|
|
|
if ($tree["CLASS"] == "OPS" || $tree["CLASS"] == "OPK")
|
|
|
|
|
{
|
|
|
|
@@ -1624,7 +1509,6 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
"RB" => $tree["RB"]);
|
|
|
|
|
|
|
|
|
|
$tree["LB"]["RB"] = $tree["RB"]["RB"];
|
|
|
|
|
// var_dump($tree);
|
|
|
|
|
// return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@@ -1723,7 +1607,6 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
// quand on est entre guillements les tokens perdent leur signification
|
|
|
|
|
$tree = $this->addtotree($tree, $t, $depth, $inquote);
|
|
|
|
|
if (!$tree)
|
|
|
|
|
|
|
|
|
|
return(null);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
@@ -1746,7 +1629,6 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
// quand on est entre guillements les tokens perdent leur signification
|
|
|
|
|
$tree = $this->addtotree($tree, $t, $depth, $inquote);
|
|
|
|
|
if (!$tree)
|
|
|
|
|
|
|
|
|
|
return(null);
|
|
|
|
|
}
|
|
|
|
|
else // '(' : appel récursif
|
|
|
|
@@ -1774,7 +1656,6 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!$tree)
|
|
|
|
|
|
|
|
|
|
return(null);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
@@ -1831,7 +1712,6 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (!$tree)
|
|
|
|
|
|
|
|
|
|
return(null);
|
|
|
|
|
}
|
|
|
|
|
break;
|
|
|
|
@@ -1844,7 +1724,6 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
print("-------------------------\n");
|
|
|
|
|
}
|
|
|
|
|
if (!$tree)
|
|
|
|
|
|
|
|
|
|
return(null);
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
@@ -1871,7 +1750,6 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (!$t)
|
|
|
|
|
|
|
|
|
|
return($tree);
|
|
|
|
|
switch ($t["CLASS"])
|
|
|
|
|
{
|
|
|
|
@@ -1879,7 +1757,6 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
// if($this->debug)
|
|
|
|
|
// {
|
|
|
|
|
// printf("addtotree({tree}, \$t='%s', \$depth=%d, inquote=%s)\n", $t["VALUE"], $depth, $inquote?"true":"false");
|
|
|
|
|
// var_dump($tree);
|
|
|
|
|
// }
|
|
|
|
|
if ($tree["CLASS"] == "SIMPLE" || $tree["CLASS"] == "QSIMPLE")
|
|
|
|
|
{
|
|
|
|
@@ -2132,7 +2009,6 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
function nexttoken($inquote = false)
|
|
|
|
|
{
|
|
|
|
|
if ($this->phq == "")
|
|
|
|
|
|
|
|
|
|
return(null);
|
|
|
|
|
switch ($c = substr($this->phq, 0, 1))
|
|
|
|
|
{
|
|
|
|
@@ -2267,10 +2143,8 @@ class searchEngine_adapter_phrasea_queryParser
|
|
|
|
|
$this->phq = $this->mb_ltrim(mb_substr($this->phq, $i + 1, 99999, 'UTF-8'), 'UTF-8');
|
|
|
|
|
}
|
|
|
|
|
if ($t != "")
|
|
|
|
|
|
|
|
|
|
return(array("CLASS" => "TOK_WORD", "VALUE" => $t));
|
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
return(array("CLASS" => "TOK_VOID", "VALUE" => $t));
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|