0

タイトルだけで商品のリストを検索したいと思います。製品のタイトルは、たとえば「ジャングル ウォリアー」のように、1 語、2 語、3 語、またはそれ以上の単語にすることができます。このような結果を関連性でランク付けしたいと思います。

フルマッチ

  1. 商品タイトルの最初の単語に検索語が含まれているか
  2. 検索用語が最初の単語に表示され、製品タイトルに複数回表示されますか (表示される回数がランク付け方法に影響します - より多い = ランキングが高くなります - 部分一致は含まれません)

部分一致

  1. 検索語は商品タイトルの 2 番目の単語とその他の単語に含まれていますか
  2. 検索語は商品タイトルの 3 番目以上の単語に含まれていますか
  3. 検索用語は、製品タイトルの最初の単語およびその他の単語の一部として表示されますか (たとえば、「戦争」という用語は「戦士」という単語の中に表示されます)。

データベースで標準クエリを実行して、一連の製品タイトルを取得します

$q = "SELECT product_title FROM products_table WHERE product_title LIKE '%" . searchString . "%' AND product_status >= '1'";

製品配列にデータを入力します

if($products = $db->recordset($q))

そのため、配列を調べて、ランキング基準に基づいて関連性を考慮して各結果をランク付けする必要があります。ここで行き詰まっています。

私が答えとしてチェックしたFULLTEXT検索を使用することが提案されています。ただし、そのクエリに問題があるため、新しい質問を開きました

4

1 に答える 1

0

MySQL はフルテキストのインデックス作成と検索をサポートしています:
FULLTEXT SEARCH

InnoDB は 5.6 で全文検索をサポートするようになりました

類似の結果を見つけて類似性でソートする方法を参照してください。

于 2013-09-05T10:02:55.237 に答える