0

大量の製品がリストされ、php で構築され、mysql データベースを使用している新しいサイトがあります。

他の大規模サイトと同じように検索を行う必要があります。たとえば、「マウンテン バイク」を検索するときにタイトルに「マウンテン バイク」が含まれる商品をピックアップするなどです。入力した用語だけを検索する場合、LIKE を使用してもこれは行われません。私は小さなサイトで AGAINST マッチングを使用しましたが、そこでは問題なく動作しますが、各単語が個別に検索されるため、この場合、データベース内の数が原因で、膨大な数の無関係な製品が表示される可能性があります.

サイトで検索するのに最適な方法を教えてください。

4

3 に答える 3

1

MySQL の全文ブール検索は、すべての単語に一致するテキストを検索したい場合に対応しています。これは、それらの間にブール ANDを使用した場合と同様です。

WHERE MATCH(product_description) AGAINST ('+mountain +bikes' IN BOOLEAN MODE)

ただし、これは両方の単語を含むテキストのみを検索します。「bikes」という単語が「mountain」の前にある場合や、2 つの単語が他のテキストで区切られている場合があります。

行のサブセットが見つかったら、最適化されていない述語を使用してさらに絞り込み、正確なフレーズを検索できます。「誤検知」によって余分な作業が発生しないことを期待できます。

WHERE MATCH(product_description) AGAINST ('+mountain +bikes' IN BOOLEAN MODE)
  AND product_description LIKE '%mountain bikes%'

フレーズを検索する機能 (および MySQL の全文検索にはないその他の多くの機能) を備えた、他のより柔軟なテキスト検索ツールを使用することもできます。

私のプレゼンテーションFull Text Search Throwdownで比較を確認してください。

于 2013-09-30T15:43:58.170 に答える
0

ここでの難点は、ある人の「まったく無関係」が別の人の「非常に適切」である可能性があることです。

MySQL を使用して、結果を降順にソートすることをお勧めしMATCH...AGAINSTますORDER BY。句を使用してWHERE、一致が結果 > 0 を返す結果のみを表示するようにします。これにより、関連性の最も低い製品 ( MATCH...AGAINST0 を返す製品) を除外しますが、ある程度関連性のある製品も表示します。

于 2013-09-30T15:26:59.753 に答える
-2

サイトが Google ウェブマスター ツールで適切に管理され、既にインデックスに登録されている場合は、Google カスタム検索エンジン (CSE) を使用できます。

https://www.google.com/cse/

これらのいずれかを使用すると、検索を機能させながら seo の問題を検出できるため、実際にインデックス化された結果が改善されることがわかりました。

これを一晩で解決することはお勧めしませんが、内部で 1 ~ 2 か月使用すると、最善の策になる可能性があります。

于 2013-09-30T12:13:42.010 に答える