Improved search.

Default is now back to subwords, but words can be used with +word and -word
This commit is contained in:
moodler
2003-08-15 08:04:54 +00:00
parent df4f06706a
commit a74f950c4e
+11 -6
View File
@@ -474,7 +474,7 @@ function forum_get_child_posts($parent) {
}
function forum_search_posts($search, $courseid, $page=0, $recordsperpage=50, $wholewords=true) {
function forum_search_posts($search, $courseid, $page=0, $recordsperpage=50) {
/// Returns a list of posts that were found
global $CFG;
@@ -497,11 +497,11 @@ function forum_search_posts($search, $courseid, $page=0, $recordsperpage=50, $wh
/// Some differences in syntax for PostgreSQL
if ($CFG->dbtype == "postgres7") {
$LIKE = "ILIKE"; // case-insensitive
$REGEXP = "~";
$LIKE = "ILIKE"; // case-insensitive
$REGEXP = "~";
} else {
$LIKE = "LIKE";
$REGEXP = "REGEXP";
$LIKE = "LIKE";
$REGEXP = "REGEXP";
}
$messagesearch = "";
@@ -517,9 +517,14 @@ function forum_search_posts($search, $courseid, $page=0, $recordsperpage=50, $wh
$subjectsearch .= " AND ";
}
if ($wholewords) {
if (substr($searchterm,0,1) == "+") {
$searchterm = substr($searchterm,1);
$messagesearch .= " p.message $REGEXP '(^|[^a-zA-Z0-9])$searchterm([^a-zA-Z0-9]|$)' ";
$subjectsearch .= " p.subject $REGEXP '(^|[^a-zA-Z0-9])$searchterm([^a-zA-Z0-9]|$)' ";
} else if (substr($searchterm,0,1) == "-") {
$searchterm = substr($searchterm,1);
$messagesearch .= " p.message NOT $REGEXP '(^|[^a-zA-Z0-9])$searchterm([^a-zA-Z0-9]|$)' ";
$subjectsearch .= " p.subject NOT $REGEXP '(^|[^a-zA-Z0-9])$searchterm([^a-zA-Z0-9]|$)' ";
} else {
$messagesearch .= " p.message $LIKE '%$searchterm%' ";
$subjectsearch .= " p.subject $LIKE '%$searchterm%' ";