Escaped Oracle Text reserved words
authorJure Kajzer <freakolowsky@users.mediawiki.org>
Fri, 8 Jan 2010 07:52:51 +0000 (07:52 +0000)
committerJure Kajzer <freakolowsky@users.mediawiki.org>
Fri, 8 Jan 2010 07:52:51 +0000 (07:52 +0000)
includes/search/SearchOracle.php

index 12f6f30..a7b6dbf 100644 (file)
  * @ingroup Search
  */
 class SearchOracle extends SearchEngine {
+       
+       private $reservedWords = array ('ABOUT' => 1, 
+                                                                       'ACCUM' => 1, 
+                                                                       'AND' => 1, 
+                                                                       'BT' => 1, 
+                                                                       'BTG' => 1, 
+                                                                       'BTI' => 1, 
+                                                                       'BTP' => 1,
+                                                                       'FUZZY' => 1, 
+                                                                       'HASPATH' => 1, 
+                                                                       'INPATH' => 1, 
+                                                                       'MINUS' => 1, 
+                                                                       'NEAR' => 1, 
+                                                                       'NOT' => 1,
+                                                                       'NT' => 1, 
+                                                                       'NTG' => 1, 
+                                                                       'NTI' => 1, 
+                                                                       'NTP' => 1, 
+                                                                       'OR' => 1, 
+                                                                       'PT' => 1, 
+                                                                       'RT' => 1, 
+                                                                       'SQE' => 1,
+                                                                       'SYN' => 1, 
+                                                                       'TR' => 1, 
+                                                                       'TRSYN' => 1, 
+                                                                       'TT' => 1, 
+                                                                       'WITHIN' => 1);
+       
        function __construct($db) {
                $this->db = $db;
        }
@@ -191,6 +219,7 @@ class SearchOracle extends SearchEngine {
        private function escapeTerm($t) {
                global $wgContLang;
                $t = $wgContLang->stripForSearch($t);
+               $t = isset($this->reservedWords[strtoupper($t)]) ? '{'.$t.'}' : $t;
                $t = preg_replace('/^"(.*)"$/', '($1)', $t);
                $t = preg_replace('/([-&|])/', '\\\\$1', $t);
                return $t;