私はデータベースを検索し、ユーザーが入力した検索文字列に基づいて一致を返すmysql/phpクエリを持っていますが、タイトルは昇順でソートされますが、それはベストマッチでソートされているようです(ElasticSearchの検索結果とスコアのランク付け方法に似ています)。 "地震II" を検索する際に現在mysql/php検索結果の順序を整える
は、結果リストには、次のようになります。
- Quake
- Quake 4
- Quake II
- Quake III Arena
期待される結果リストでなければなりません:
- Quake II (corresponding exactly to the search)
- Quake III Arena (containing entirely the search)
- Quake
- Quake 4
現在のPHP/MySQLのクエリは次のとおりです。
$nameKeys = explode(" ", $gamenamethathasbeensearchedfor);
$query = "SELECT id FROM games WHERE GameTitle LIKE '%$nameKeys[0]%'";
for($i = 1; $i <= count($nameKeys); $i++)
{
if($nameKeys[$i] != "" || $nameKeys[$i] != " " || $nameKeys[$i] != " " || $nameKeys[$i] != " ")
{
$query .= " AND GameTitle LIKE '%$nameKeys[$i]%'";
}
}
MySQL Full-text functionsをチェックアウトをお勧めします'マッチ。 http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html –
Mysqlの全文検索機能をご覧ください – Kurt