2

私は本当にこれで壁に頭をぶつけていました、そして私はいくつかの助けを借りることができました. レコードが 900 未満の MYSQL データベースがあります。複数の列にまたがる全文検索を行う必要がありますが、うまくいかないようです。「LName」フィールドを検索すると、いくつかのレコードが表示されます。たとえば、「Smith」を検索すると、データベースに 8 行が含まれている場合、7 行が返されます。単一の姓「Albritton」を検索すると、そうではありません。それが存在することを知っているとき、それをまったく見つけられません。これは、データベース内の多くのレコードに当てはまります。あなたが検索すると、私は存在することを知っていても、存在しないようです。

Lname、Fname、City、State などを検索するために SELECT / FROM / WHERE / OR を実行していましたが、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..");
    }

等...

4

1 に答える 1