我真的一直用这个在墙上敲打我的头,我需要一些帮助。我有一个不到 900 条记录的 MYSQL 数据库。我必须跨多个列进行全文搜索,但它似乎不起作用。当我搜索“LName”字段时,它会显示一些记录,例如,如果我搜索“Smith”,当数据库包含 8 行时,它会返回 7 行。当我搜索单个姓氏“Albritton”时,它不会当我知道它存在时,根本找不到它。这适用于数据库中的许多记录。你搜索,它似乎不存在,即使我知道它存在。
我正在执行 SELECT / FROM / WHERE / OR 来搜索 Lname、Fname、City、State 等,但它只会搜索 LNAME,而且它仍然只会返回部分结果。
经过数小时的在线搜索,我决定在表上创建一个索引并进行搜索索引 WHERE MATCH 搜索,这很有效,但我仍然得到相同的有限结果。我正在使用 PHPMYADMIN 并运行了分析和修复,但它说它很好并且没有任何改变。
根据我所读到的,对于这么小的表,我最好根本不使用索引,我对此很好,但似乎都不能正常工作。
此外,我创建的所有索引的基数都是“1”,这似乎不正确。
我将在此处粘贴我的 search.PHP。请原谅乱七八糟的东西,我整晚都在尝试。任何帮助表示赞赏。
/* $result = mysql_query ("SELECT * FROM attorney WHERE lname LIKE '%$keyword%'
OR
fname LIKE '%$keyword%'
OR
phone LIKE '%$keyword%'
OR
bizname LIKE '%$keyword%'
OR
address LIKE '%$keyword%'
OR
city LIKE '%$keyword%'
OR
zip LIKE '%$keyword%'
ORDER BY if(lname = '' or lname is null,1,0), lname ASC, fname $limit"); */
$result = mysql_query ("SELECT * FROM attorney USE INDEX (index1) WHERE MATCH (lname, fname, city, state, zip) AGAINST ('%$keyword%' IN BOOLEAN MODE)
");
$row = mysql_fetch_array($result);
if (!$result)
{
die("Error: Data not found..");
}
ETC...