X-Git-Url: http://git.shiar.net/minimedit.git/blobdiff_plain/73362ad67d9e983d7ab26c068e4d595069bf01ef..e6e54fe22ae87eb9487595b3e6afa5b80c12e3f1:/search.php diff --git a/search.php b/search.php index 2f093c9..0b15607 100644 --- a/search.php +++ b/search.php @@ -5,31 +5,27 @@ $query = @$_REQUEST['q'] ?: $Args ?: $Page; if (!trim($query, '/')) return; -$cmd = "git grep -li -- ".escapeshellarg($query).$path; -exec($cmd, $results); -if (count($results) > $limit) { - shuffle($results); - array_splice($results, $limit); -} +if (!empty($Place['suggest'])) { + $cmd = "git ls-files -- $path"; + exec($cmd, $ls); + if (!$ls) { + die("fout bij zoeken van bestanden"); + } -$cmd = "git ls-files -- $path"; -exec($cmd, $ls); -if ($ls) { # order files by similarity to query $ls = array_combine($ls, array_map(function ($row) use ($query) { $row = preg_replace('{(?:^|/)index\.html$}', '', $row); return similar_text($row, $query) - strlen($row) / 8; }, $ls)); arsort($ls); - - # prepend best match, replace unless duplicate - array_unshift($results, key($ls)); - $results = array_unique($results); - array_splice($results, $limit); + $results = array_keys($ls); } - -elseif (!$results) { - $results = ['index.html']; +else { + $cmd = "git grep -li -- ".escapeshellarg($query).$path; + exec($cmd, $results); + if (count($results) > $limit) { + shuffle($results); // avoid alphabetical top set + } } if (isset($Place['verbose'])) { @@ -40,9 +36,23 @@ if (isset($Place['verbose'])) { } require_once('nieuws.inc.php'); -print '\n";