Index: trunk/kernel/frontaction.php
===================================================================
diff -u -r827 -r836
--- trunk/kernel/frontaction.php (.../frontaction.php) (revision 827)
+++ trunk/kernel/frontaction.php (.../frontaction.php) (revision 836)
@@ -767,26 +767,58 @@
$keywords = $_POST["keywords"];
$type = $objItemTypes->GetTypeByName("Category");
$objSearch = new clsSearchResults("Category","clsCategory");
+ $length = $objConfig->Get('Search_MinKeyword_Length');
if(strlen($keywords))
- {
- $objSearchList = new clsSearchLogList();
- $objSearchList->UpdateKeyword($keywords,0);
+ {
+ $performSearch = false;
+ $isExact = (substr($keywords, 0, 1) == '"' && substr($keywords, strlen($keywords) - 1, 1) == '"');
- $objSearch->SetKeywords($keywords);
- $objSearch->AddSimpleFields();
- if(is_numeric($objConfig->Get("SearchRel_Pop_category")))
- $objSearch->PctPop = ($objConfig->Get("SearchRel_Pop_category")/100);
- if(is_numeric($objConfig->Get("SearchRel_Keyword_category")))
- $objSearch->PctRelevance = ($objConfig->Get("SearchRel_Keyword_category")/100);
- if(is_numeric($objConfig->Get("SearchRel_Rating_article")))
- $objSearch->PctRating = ($objConfig->Get("SearchRel_Rating_category")/100);
-
- //echo "Searching On $keywords
\n";
- $objSearch->PerformSearch(1,$SortOrder,TRUE);
- $SearchPerformed = TRUE;
- //$objSearch->SetRelevence($type->Get("ItemType"), "CategoryId");
- //echo "Finished Setting Category Relevence
\n";
+ if ($isExact) {
+ $performSearch = (strlen(trim(str_replace('"', '', $keywords))) >= $length);
+ }
+ else {
+ $key_arr = explode(' ', $keywords);
+
+ foreach($key_arr as $value) {
+ if (strlen($value) < $length) {
+ $keywords = str_replace(' '.$value, '', $keywords);
+ $keywords = str_replace($value.' ', '', $keywords);
+ }
+ }
+
+ $keywords = str_replace(' ', ' ', $keywords);
+
+ $performSearch = (strlen($keywords) >= $length);
+ }
+
+ if ($performSearch) {
+ $objSearchList = new clsSearchLogList();
+ $objSearchList->UpdateKeyword($keywords,0);
+
+ $objSearch->SetKeywords($keywords);
+ $objSearch->AddSimpleFields();
+ if(is_numeric($objConfig->Get("SearchRel_Pop_category")))
+ $objSearch->PctPop = ($objConfig->Get("SearchRel_Pop_category")/100);
+ if(is_numeric($objConfig->Get("SearchRel_Keyword_category")))
+ $objSearch->PctRelevance = ($objConfig->Get("SearchRel_Keyword_category")/100);
+ if(is_numeric($objConfig->Get("SearchRel_Rating_article")))
+ $objSearch->PctRating = ($objConfig->Get("SearchRel_Rating_category")/100);
+
+ //echo "Searching On $keywords
\n";
+ $objSearch->PerformSearch(1,$SortOrder,TRUE);
+ $SearchPerformed = TRUE;
+ //$objSearch->SetRelevence($type->Get("ItemType"), "CategoryId");
+ //echo "Finished Setting Category Relevence
\n";
+ }
+ else {
+ if(strlen($_GET["Error"])>0)
+ $var_list["t"] = $_GET["Error"];
+
+ $MissingCount = SetMissingDataErrors("m_simplesearch");
+ $MissingCount++;
+ $FormError["m_simplesearch"]["keywords"] = language("lu_keywords_tooshort");
+ }
}
else
{
@@ -853,8 +885,32 @@
$keywords = $_POST["keywords"];
$type = $objItemTypes->GetTypeByName("Category");
$objSearch = new clsSearchResults("Category","clsCategory");
+ $length = $objConfig->Get('Search_MinKeyword_Length');
+
if(strlen($keywords))
- {
+ {
+ $performSearch = false;
+ $isExact = (substr($keywords, 0, 1) == '"' && substr($keywords, strlen($keywords) - 1, 1) == '"');
+
+ if ($isExact) {
+ $performSearch = (strlen(trim(str_replace('"', '', $keywords))) >= $length);
+ }
+ else {
+ $key_arr = explode(' ', $keywords);
+
+ foreach($key_arr as $value) {
+ if (strlen($value) < $length) {
+ $keywords = str_replace(' '.$value, '', $keywords);
+ $keywords = str_replace($value.' ', '', $keywords);
+ }
+ }
+
+ $keywords = str_replace(' ', ' ', $keywords);
+
+ $performSearch = (strlen($keywords) >= $length);
+ }
+
+ if ($performSearch) {
$objSearchList = new clsSearchLogList();
$objSearchList->UpdateKeyword($keywords,0);
@@ -874,6 +930,12 @@
//$objSearch->SetRelevence($type->Get("ItemType"), "CategoryId");
}
$SearchPerformed = TRUE;
+ }
+ else {
+ $MissingCount = SetMissingDataErrors("m_simplesearch");
+ $MissingCount++;
+ $FormError["m_simplesearch"]["keywords"] = language("lu_keywords_tooshort");
+ }
}
else {
$MissingCount = SetMissingDataErrors("m_simplesearch");