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); + } +}