12/28/2004

Serendity中文搜索问题的解决

serendipity0.6p11 not support multi-byte language's search,such as Chinese search.

i changed function serendipity_searchEntries in serendipity_functions.inc.php to fix it.
--------------------------------------------
function serendipity_searchEntries($term) {
global $serendipity;
$querystring = "SELECT
e.id,
e.author,
a.username,
a.email,
e.categoryid,
c.category_name,
e.timestamp,
e.comments,
e.title,
e.body,
e.extended,
e.trackbacks,
e.exflag

FROM
{$serendipity['dbPrefix']}entries e
LEFT JOIN {$serendipity['dbPrefix']}category c
ON e.categoryid = c.categoryid,
{$serendipity['dbPrefix']}authors a
WHERE
a.authorid = e.authorid
AND ((e.title LIKE ('%" . addslashes($term) . "%')) or (e.body LIKE ('%" . addslashes($term) . "%')) or (e.extended LIKE ('%" . addslashes($term) . "%')))
AND isdraft = 'false'
ORDER BY
timestamp DESC";
return serendipity_db_query($querystring);
}
------------------------------
i used

AND ((e.title LIKE ('%" . addslashes($term) . "%')) or (e.body LIKE ('%" . addslashes($term) . "%')) or (e.extended LIKE ('%" . addslashes($term) . "%')))
instead old
AND MATCH (title,body,extended) AGAINST ('".addslashes($term)."')