2

私はレーベンシャイン関数や他の解決策を調べましたが、私がやろうとしていることは1つのクエリで達成できると思います. 一般的なストップワードを削除する関数を作成してから、重要な単語を取得して配列に入れ、クエリで使用しました。これが私がこれまでに持っているものです。

$title = removecommonwords($itemtitle);
$title = explode (" ", $title);

$comparequery = mysql_query("SELECT * FROM listings WHERE (CONCAT(title, description) LIKE '%".$title."%') LIMIT 0,5 ORDER BY ...);

最も近い一致で結果を並べ替えるにはどうすればよいですか?

4

1 に答える 1

0

これは、現在配列があるlike句を修正すれば検索で機能するはずですが、CONCAT()はタイトルまたは説明に存在するインデックスの利点を破壊するため、テーブル全体をスキャンすることに注意してください。

explode()配列を作成します。単一の文字列を作成するかimplode()、\を使用して$ title配列を反復処理し、各値に対してクエリを呼び出す必要があります...そのような配列をそのようなlike句に貼り付けることはできません。

Mysqlには、like句からの一致の割合でネイティブに順序付けする方法がありません。

于 2013-01-06T21:43:15.483 に答える