diff --git a/tests/Search/QueryTestCase.php b/tests/Search/QueryTestCase.php
index 7025dc84c..09c396c3c 100644
--- a/tests/Search/QueryTestCase.php
+++ b/tests/Search/QueryTestCase.php
@@ -283,55 +283,7 @@ class Doctrine_Search_Query_TestCase extends Doctrine_UnitTestCase
$this->assertEqual($q->getSql(), $sql);
}
- /**
- public function testQuerySupportsMultiWordOrOperatorSearchWithQuotes()
- {
- $q = new Doctrine_Search_Query('SearchTestIndex');
- $q->search("doctrine^2 OR 'dbal database'");
- $sql = 'SELECT foreign_id, SUM(relevancy) AS relevancy_sum '
- . 'FROM (SELECT COUNT(keyword) * 2 AS relevancy, foreign_id '
- . 'FROM search_index '
- . 'WHERE keyword = ? '
- . 'GROUP BY foreign_id '
- . 'UNION '
- . 'SELECT COUNT(keyword) AS relevancy, foreign_id '
- . 'FROM search_index) AS query_alias '
- . 'WHERE keyword = ? AND (position + 1) = (SELECT position FROM search_index WHERE keyword = ?) '
- . 'GROUP BY foreign_id) '
- . 'GROUP BY foreign_id '
- . 'ORDER BY relevancy_sum';
-
- print $q->getSql() . "
";
- print $sql;
- $this->assertEqual($q->getSql(), $sql);
- }
-
- public function testQuerySupportsMultiWordAndOperatorSearchWithQuotes()
- {
- $q = new Doctrine_Search_Query('SearchTestIndex');
- $q->search("doctrine 'dbal database'");
-
- $sql = "SELECT foreign_id, SUM(relevancy) AS relevancy_sum FROM
- (SELECT COUNT(keyword) * 2 AS relevancy, foreign_id
- FROM search_index
- WHERE keyword = 'doctrine'
- GROUP BY foreign_id
- UNION
- SELECT COUNT(keyword) AS relevancy, foreign_id
- FROM search_index) AS query_alias
- WHERE keyword = 'dbal' AND (position + 1) = (SELECT position FROM search_index WHERE keyword = 'database')
- GROUP BY foreign_id
- WHERE search_test_id IN (SELECT search_test_id FROM search_test_index
- WHERE keyword = ?)
- AND seach_test_id IN (SELECT search_test_id FROM search_test_index
- WHERE keyword = 'dbal'
- AND (position + 1) = (SELECT position FROM search_index WHERE keyword = 'database')
- GROUP BY foreign_id
- ORDER BY relevancy_sum";
-
- $this->assertEqual($q->getSql(), $sql);
- }
public function testSearchReturnsFalseForEmptyStrings()
{
$q = new Doctrine_Search_Query('SearchTestIndex');
@@ -339,5 +291,5 @@ class Doctrine_Search_Query_TestCase extends Doctrine_UnitTestCase
$this->assertFalse($result);
}
- */
+
}
diff --git a/tests/Search/QueryWeightTestCase.php b/tests/Search/QueryWeightTestCase.php
new file mode 100644
index 000000000..0047a0562
--- /dev/null
+++ b/tests/Search/QueryWeightTestCase.php
@@ -0,0 +1,129 @@
+.
+ */
+
+/**
+ * Doctrine_Search_QueryWeight_TestCase
+ *
+ * @package Doctrine
+ * @author Konsta Vesterinen
+ * @license http://www.opensource.org/licenses/lgpl-license.php LGPL
+ * @category Object Relational Mapping
+ * @link www.phpdoctrine.com
+ * @since 1.0
+ * @version $Revision$
+ */
+class Doctrine_Search_QueryWeight_TestCase extends Doctrine_UnitTestCase
+{
+ public function testQuerySupportsMultiWordOrOperatorSearchWithQuotes()
+ {
+ $q = new Doctrine_Search_Query('SearchTestIndex');
+ $q->search("doctrine^2 OR 'dbal database'");
+
+ $sql = 'SELECT foreign_id, SUM(relevancy) AS relevancy_sum '
+ . 'FROM (SELECT COUNT(keyword) * 2 AS relevancy, foreign_id '
+ . 'FROM search_index '
+ . 'WHERE keyword = ? '
+ . 'GROUP BY foreign_id '
+ . 'UNION '
+ . 'SELECT COUNT(keyword) AS relevancy, foreign_id '
+ . 'FROM search_index) AS query_alias '
+ . 'WHERE keyword = ? AND (position + 1) = (SELECT position FROM search_index WHERE keyword = ?) '
+ . 'GROUP BY foreign_id) '
+ . 'GROUP BY foreign_id '
+ . 'ORDER BY relevancy_sum';
+
+ $this->assertEqual($q->getSql(), $sql);
+ }
+
+ public function testSearchSupportsMixingOfOperatorsParenthesisAndWeights()
+ {
+ $q = new Doctrine_Search_Query('SearchTestIndex');
+ $q->search('(doctrine^2 OR orm) AND dbal');
+
+ $sql = "SELECT foreign_id, SUM(relevancy) AS relevancy_sum FROM
+ (SELECT COUNT(keyword) * 2 AS relevancy, foreign_id
+ FROM search_index
+ WHERE keyword = 'doctrine'
+ GROUP BY foreign_id
+ UNION
+ SELECT COUNT(keyword) * 2 AS relevancy, foreign_id
+ FROM search_index
+ WHERE keyword = 'orm'
+ GROUP BY foreign_id
+ INTERSECT
+ SELECT COUNT(keyword) AS relevancy, foreign_id
+ FROM search_index) AS query_alias
+ WHERE keyword = 'dbal'
+ GROUP BY foreign_id)
+ GROUP BY foreign_id
+ ORDER BY relevancy_sum";
+
+ $this->assertEqual($q->getSql(), $sql);
+ }
+
+ public function testQuerySupportsMultiWordAndOperatorSearchWithQuotesAndWeights()
+ {
+ $q = new Doctrine_Search_Query('SearchTestIndex');
+ $q->search("doctrine^2 'dbal database'");
+
+ $sql = "SELECT foreign_id, SUM(relevancy) AS relevancy_sum FROM
+ (SELECT COUNT(keyword) * 2 AS relevancy, foreign_id
+ FROM search_index
+ WHERE keyword = 'doctrine'
+ GROUP BY foreign_id
+ INTERSECT
+ SELECT COUNT(keyword) AS relevancy, foreign_id
+ FROM search_index) AS query_alias
+ WHERE keyword = 'dbal' AND (position + 1) = (SELECT position FROM search_index WHERE keyword = 'database')
+ GROUP BY foreign_id)
+ GROUP BY foreign_id
+ ORDER BY relevancy_sum";
+
+ $this->assertEqual($q->getSql(), $sql);
+ }
+
+ public function testQuerySupportsMultiWordNegationOperatorSearchWithQuotesWeights()
+ {
+ $q = new Doctrine_Search_Query('SearchTestIndex');
+ $q->search("doctrine^2 'dbal database' -rdbms");
+
+ $sql = "SELECT foreign_id, SUM(relevancy) AS relevancy_sum FROM
+ (SELECT COUNT(keyword) * 2 AS relevancy, foreign_id
+ FROM search_index
+ WHERE keyword = 'doctrine'
+ GROUP BY foreign_id
+ INTERSECT
+ SELECT COUNT(keyword) AS relevancy, foreign_id
+ FROM search_index) AS query_alias
+ WHERE keyword = 'dbal' AND (position + 1) = (SELECT position FROM search_index WHERE keyword = 'database')
+ GROUP BY foreign_id
+ EXCEPT
+ SELECT COUNT(keyword) AS relevancy, foreign_id
+ FROM search_index) AS query_alias
+ WHERE keyword != 'rdbms'
+ GROUP BY foreign_id
+ )
+ GROUP BY foreign_id
+ ORDER BY relevancy_sum";
+
+ $this->assertEqual($q->getSql(), $sql);
+ }
+}