If anyone has a few moments I would appreciate it they could have a look at http://www.pacemakerpressintl.com this is a site I have been building and is now LIVE, however, it has been noticed that the search is not performing quite as it should ....
1. Quick Search off the front page : Enter some phrase, eg Alan Smart
Results show 27 images, I have already modified com_search to default to exact search
2. Click on page 2 of the results, the remaining 2 images show up as they are still being searched under the exact phrase.
Now, try this one, back to the front page, search for Keith Gillespie, 487 results.
Click on say page 7, the search returns to an "any" word search - question is Why? and more importantly, how can I fix it!
Thanks in advance
Advertisement
Search Problem
Moderator: General Support Moderators
Forum rules
Forum Rules
Absolute Beginner's Guide to Joomla! <-- please read before posting, this means YOU.
Forum Post Assistant - If you are serious about wanting help, you will use this tool to help you post.
Forum Rules
Absolute Beginner's Guide to Joomla! <-- please read before posting, this means YOU.
Forum Post Assistant - If you are serious about wanting help, you will use this tool to help you post.
Advertisement
-
- Joomla! Apprentice
- Posts: 5
- Joined: Sun Dec 24, 2006 1:30 pm
- Location: Bratislava, Slovak Republic
- Contact:
Re: Search Problem
How exactly did you do that?desk2web wrote: I have already modified com_search to default to exact search
Thanks
-
- Joomla! Enthusiast
- Posts: 121
- Joined: Mon May 15, 2006 2:50 pm
Re: Search Problem
Edit the search.php file in com_search:
Code: Select all
<?php
/**
* @version $Id: search.php 3723 2006-05-29 16:14:03Z stingrey $
* @package Joomla
* @subpackage Search
* @copyright Copyright (C) 2005 Open Source Matters. All rights reserved.
* @license http://www.gnu.org/copyleft/gpl.html GNU/GPL, see LICENSE.php
* Joomla! is free software. This version may have been modified pursuant
* to the GNU General Public License, and as distributed it includes or
* is derivative of works licensed under the GNU General Public License or
* other free or open source software licenses.
* See COPYRIGHT.php for copyright notices and details.
*/
// no direct access
defined( '_VALID_MOS' ) or die( 'Restricted access' );
require_once( $mainframe->getPath( 'front_html' ) );
if($_REQUEST['searchphrase']=='')
{
$_REQUEST['searchphrase']=$_GET['searchphrase']='exact';
}
// page title
$mainframe->setPageTitle( _SEARCH_TITLE );
switch ( $task ) {
default:
viewSearch();
break;
}
function viewSearch() {
global $mainframe, $mosConfig_absolute_path, $mosConfig_lang, $my;
global $Itemid, $database, $_MAMBOTS;
global $mosConfig_list_limit;
//$mosConfig_list_limit=50;
$restriction = 0;
// try to find search component's Itemid
$query = "SELECT id"
. "\n FROM #__menu"
. "\n WHERE type = 'components'"
. "\n AND published = 1"
. "\n AND link = 'index.php?option=com_search'"
;
$database->setQuery( $query );
$_Itemid = $database->loadResult();
if ($_Itemid != "") {
$Itemid = $_Itemid;
}
$gid = $my->gid;
// Adds parameter handling
if( $Itemid > 0 && $Itemid != 99999999 ) {
$menu = $mainframe->get( 'menu' );
$params = new mosParameters( $menu->params );
$params->def( 'page_title', 1 );
$params->def( 'pageclass_sfx', '' );
$params->def( 'header', $menu->name, _SEARCH_TITLE );
$params->def( 'back_button', $mainframe->getCfg( 'back_button' ) );
} else {
$params = new mosParameters('');
$params->def( 'page_title', 1 );
$params->def( 'pageclass_sfx', '' );
$params->def( 'header', _SEARCH_TITLE );
$params->def( 'back_button', $mainframe->getCfg( 'back_button' ) );
}
// html output
search_html::openhtml( $params );
$searchword = strval( mosGetParam( $_REQUEST, 'searchword', '' ) );
$searchword = $database->getEscaped( trim( $searchword ) );
// limit searchword to 20 characters
if ( strlen( $searchword ) > 20 ) {
$searchword = substr( $searchword, 0, 19 );
$restriction = 1;
}
// searchword must contain a minimum of 3 characters
if ( $searchword && strlen( $searchword ) < 3 ) {
$searchword = '';
$restriction = 1;
}
$search_ignore = array();
@include "$mosConfig_absolute_path/language/$mosConfig_lang.ignore.php";
$orders = array();
$orders[] = mosHTML::makeOption( 'newest', _SEARCH_NEWEST );
$orders[] = mosHTML::makeOption( 'oldest', _SEARCH_OLDEST );
$orders[] = mosHTML::makeOption( 'popular', _SEARCH_POPULAR );
$orders[] = mosHTML::makeOption( 'alpha', _SEARCH_ALPHABETICAL );
$orders[] = mosHTML::makeOption( 'category', _SEARCH_CATEGORY );
$ordering = strtolower( strval( mosGetParam( $_REQUEST, 'ordering', 'newest') ) );
$lists = array();
$lists['ordering'] = mosHTML::selectList( $orders, 'ordering', 'id="search_ordering" class="inputbox"', 'value', 'text', $ordering );
$searchphrase = strtolower( strval( mosGetParam( $_REQUEST, 'searchphrase', 'exact' ) ) );
$searchphrases = array();
$phrase = new stdClass();
$phrase->value = 'any';
$phrase->text = _SEARCH_ANYWORDS;
$searchphrases[] = $phrase;
$phrase = new stdClass();
$phrase->value = 'all';
$phrase->text = _SEARCH_ALLWORDS;
$searchphrases[] = $phrase;
$phrase = new stdClass();
$phrase->value = 'exact';
$phrase->text = _SEARCH_PHRASE;
$searchphrases[] = $phrase;
$lists['searchphrase']= mosHTML::radioList( $searchphrases, 'searchphrase', '', $searchphrase );
// html output
search_html::searchbox( htmlspecialchars( stripslashes( $searchword ) ), $lists, $params );
if (!$searchword) {
if ( count( $_POST ) ) {
// html output
// no matches found
search_html::message( _NOKEYWORD, $params );
} else if ( $restriction ) {
// html output
search_html::message( _SEARCH_MESSAGE, $params );
}
} else if ( in_array( $searchword, $search_ignore ) ) {
// html output
search_html::message( _IGNOREKEYWORD, $params );
} else {
// html output
if ( $restriction ) {
// html output
search_html::message( _SEARCH_MESSAGE, $params );
}
$searchword_clean = htmlspecialchars( stripslashes( $searchword ) );
search_html::searchintro( $searchword_clean, $params );
mosLogSearch( $searchword );
$phrase = strval( mosGetParam( $_REQUEST, 'searchphrase', '' ) );
$ordering = strval( mosGetParam( $_REQUEST, 'ordering', '' ) );
$_MAMBOTS->loadBotGroup( 'search' );
$results = $_MAMBOTS->trigger( 'onSearch', array( $searchword, $phrase, $ordering ) );
$totalRows = 0;
$rows = array();
for ($i = 0, $n = count( $results); $i < $n; $i++) {
$rows = array_merge( (array)$rows, (array)$results[$i] );
}
$totalRows = count( $rows );
for ($i=0; $i < $totalRows; $i++) {
$text = &$rows[$i]->text;
if ($phrase == 'exact') {
$searchwords = array($searchword);
$needle = $searchword;
} else {
$searchwords = explode(' ', $searchword);
$needle = $searchwords[0];
}
$text = mosPrepareSearchContent( $text, 200, $needle );
foreach ($searchwords as $hlword) {
$text = preg_replace( '/' . preg_quote( $hlword, '/' ) . '/i', '<span class="highlight">\0</span>', $text );
}
if ( strpos( $rows[$i]->href, 'http' ) == false ) {
$url = parse_url( $rows[$i]->href );
parse_str( @$url['query'], $link );
// determines Itemid for Content items where itemid has not been included
if ( isset($rows[$i]->type) && @$link['task'] == 'view' && isset($link['id']) && !isset($link['Itemid']) ) {
$itemid = '';
$_itemid = $mainframe->getItemid( $link['id'], 0 );
if ($_itemid) {
$itemid = '&Itemid='. $_itemid;
}
$rows[$i]->href = $rows[$i]->href . $itemid;
}
}
}
$mainframe->setPageTitle( _SEARCH_TITLE );
$total = $totalRows;
$limit = intval( mosGetParam( $_GET, 'limit', $mosConfig_list_limit ) );
$limitstart = intval( mosGetParam( $_GET, 'limitstart', 0 ) );
// prepares searchword for proper display in url
$searchword_clean = urlencode(stripslashes($searchword_clean));
if ( $n ) {
// html output
require_once( $GLOBALS['mosConfig_absolute_path'] . '/includes/pageNavigation.php' );
$pageNav = new mosPageNav( $total, $limitstart, $limit );
search_html::display( $rows, $params, $pageNav, $limitstart, $limit, $total, $totalRows, $searchword_clean );
} else {
// html output
search_html::displaynoresult();
}
// html output
search_html::conclusion( $searchword_clean, $pageNav );
}
// displays back button
echo '<br/>';
mosHTML::BackButton ( $params, 0 );
}
function mosLogSearch( $search_term ) {
global $database;
global $mosConfig_enable_log_searches;
if ( @$mosConfig_enable_log_searches ) {
$query = "SELECT hits"
. "\n FROM #__core_log_searches"
. "\n WHERE LOWER( search_term ) = '$search_term'"
;
$database->setQuery( $query );
$hits = intval( $database->loadResult() );
if ( $hits ) {
$query = "UPDATE #__core_log_searches"
. "\n SET hits = ( hits + 1 )"
. "\n WHERE LOWER( search_term ) = '$search_term'"
;
$database->setQuery( $query );
$database->query();
} else {
$query = "INSERT INTO #__core_log_searches VALUES ( '$search_term', 1 )"
;
$database->setQuery( $query );
$database->query();
}
}
}
?>
Advertisement