@@ -45,30 +45,21 @@ function getItemsFromSearch($searchterm, $userDao, $limit = 14, $group = true, $
45
45
}
46
46
}
47
47
48
- $ searchterms = explode (' ' , $ searchterm );
49
- // Apparently it's slow to do a like in a subquery so we run it first
50
- $ sql = $ this ->database ->select ()->from (array ('i ' => 'itemkeyword ' ), array ())
51
- ->setIntegrityCheck (false );
52
- $ sql ->join (array ('i2k ' => 'item2keyword ' ), 'i.keyword_id = i2k.keyword_id ' , array ('item_id ' ));
53
-
54
- if (empty ($ searchterms ))
48
+ require_once BASE_PATH .'/core/controllers/components/SearchComponent.php ' ;
49
+ $ component = new SearchComponent ();
50
+ $ index = $ component ->getLuceneItemIndex ();
51
+ Zend_Search_Lucene_Search_QueryParser::setDefaultOperator (Zend_Search_Lucene_Search_QueryParser::B_AND );
52
+ Zend_Search_Lucene::setResultSetLimit ($ limit * 3 );
53
+ if ($ group && strpos ($ searchterm , ': ' ) === false )
55
54
{
56
- return array ( );
55
+ $ rowset = $ index -> find ( ' title: ' . $ searchterm );
57
56
}
58
-
59
- foreach ($ searchterms as $ key => $ term )
57
+ else
60
58
{
61
- if ($ key == 0 )
62
- {
63
- $ sql ->where ('value LIKE ? ' , '% ' .$ term .'% ' );
64
- }
65
- else
66
- {
67
- $ sql ->orWhere ('value LIKE ? ' , '% ' .$ term .'% ' );
68
- }
59
+ $ rowset = $ index ->find ($ searchterm );
69
60
}
70
-
71
- $ rowset = $ this -> database -> fetchAll ( $ sql );
61
+
62
+
72
63
$ return = array ();
73
64
$ itemIdsCount = array ();
74
65
$ itemIds = array ();
@@ -85,14 +76,7 @@ function getItemsFromSearch($searchterm, $userDao, $limit = 14, $group = true, $
85
76
}
86
77
foreach ($ itemIdsCount as $ key => $ n )
87
78
{
88
- if ($ n < count ($ searchterms ))
89
- {
90
- unset($ itemIdsCount [$ key ]);
91
- }
92
- else
93
- {
94
- $ itemIds [] = $ key ;
95
- }
79
+ $ itemIds [] = $ key ;
96
80
}
97
81
98
82
if (empty ($ itemIds ))
0 commit comments