Help talk:Searching

Why doesn't the search support phases? At the very least the search should return pages containing ALL the words first. The search functionality is inadequate.

At some point I plan to replace the Mediawiki built-in search with something that supports phase matching.

change Stopwords?
is it possible, to change the stopwords on a local wiki? Where can I find the stopwordlist? --141.113.86.23 16:26, 26 April 2007 (UTC)


 * I found them in the file mysqld-opt.exe, but that does not seem to be directly editable.--Patrick 09:39, 29 April 2007 (UTC)

Wildcard Search
What is the recommended approach of adding wildcard search. E.g. I would like to get the following to work Rab* would return Rabbi, Rabbit, Rabbits etc.... Many thanks --Markw21 12:32, 8 May 2007 (UTC)


 * Yes, like that, rab*. The asterisk seems to work only at the end of a word.--Patrick 12:51, 8 May 2007 (UTC)


 * Thanks Patrick, but it does not seem to work for me, I specifically have a document called Outages, but when I search for Outage or Outage* it does not find the document. (Mediawiki 1.9.2, PHP 5.2.1, MySQL 5.0.37) --Markw21 12:54, 8 May 2007 (UTC)


 * I see now that you need to install the extension lucene search.--Patrick 15:40, 8 May 2007 (UTC)


 * Is there anyway I can get wildcard searching working without having to install lucene, c#, mono, mcs. There seems to be various different methods, and I would like to pick an 'easy', commonly adopted method, that will not be broken by future releases of mediawiki.


 * Yes! Create a new file in include/ named SearchMySQL4SubString.php with following content:

db =& $db; }

function legalSearchChars { return "A-Za-z_'0-9\\x80-\\xFF\\-*?+"; }

/** @todo document */ function parseQuery( $filteredText, $fulltext ) { global $wgContLang; $lc = SearchEngine::legalSearchChars; $searchon = ''; $this->searchTerms = array;

wfDebug( "parseQuery filteredText is: '$filteredText'\n" ); wfDebug( "parseQuery fulltext is: '$fulltext'\n" );

# FIXME: This doesn't handle parenthetical expressions. if( preg_match_all( '/([-+<>~]?)((['. $lc. ']+)(\*?)|"[^"]*")/',                   $filteredText, $m, PREG_SET_ORDER ) ) {                  foreach( $m as $terms ) {                        if( $searchon !==  ) $searchon .= ' ';                        $searchon .= $terms[1] . $wgContLang->stripForSearch( $terms[2] );                        if( !empty( $terms[3] ) ) {                              $regexp = preg_quote( $terms[3], '/' );                              if( $terms[4] ) $regexp .= "[0-9A-Za-z_]+";                        } else {                              $regexp = preg_quote( str_replace( '"', , $terms[2] ), '/' ); }                       $this->searchTerms[] = $regexp; }                 wfDebug( "Would search with '$searchon'\n" ); wfDebug( "Match with /\b" . implode( '\b|\b', $this->searchTerms ) . "\b/\n" ); } else { wfDebug( "Can't understand search query '{$this->filteredText}'\n" ); }

$searchon = $this->db->strencode( $searchon ); $field = $this->getIndexField( $fulltext ); return " MATCH($field) AGAINST('$searchon' IN BOOLEAN MODE) "; } } ?>
 * Then add following lines in your LocalSettings.php

require_once( 'SearchMySQL4SubString.php' ); $wgSearchType = 'SearchMySQL4SubString';


 * And yes, it works with MySQL5 :)

--213.214.18.64 09:52, 10 May 2007 (UTC)

Many thanks that works great, if there anyway to get it to always add the *, so the user wouldn't have to? --Markw21 11:43, 10 May 2007 (UTC)


 * Oh yes, you can change the function searchText in the SearchMySQL.php like that

function searchText( $term ) { $resultSet = $this->db->resultObject( $this->db->query( $this->getQuery( $this->filter( $term ).'*', true ) ) ); return new MySQLSearchResultSet( $resultSet, $this->searchTerms );
 * So the * is in the sourcecode and doesn't need to be inserted manually.
 * --213.214.18.64 12:27, 10 May 2007 (UTC)

Searchresults - jump to result by link
Is it possible to jump directly to a result found in a text? For example: I search for "computer", my result is a page where "computer" appears 200 times. The result I need is in line 1534. Can mediawiki create a link direct to this line in the text? --213.214.18.64 10:12, 10 May 2007 (UTC)