1

私は自分のウェブサイトの検索フォーム/スクリプトに取り組んでいます。

まず、私のウェブサイトのコンテンツで使用されるすべての単語は、MYSQL テーブルと呼ばれる名前で保存され、words次のようになります。

id |  word | title_count | content_count | article_count | photo_count | video_count |
---+-------+-------------+---------------+---------------+-------------+-------------+
 1 | hello |           3 |             1 |             0 |           1 |           0 |
 2 |  what |           1 |             4 |             1 |           0 |           0 |

wordおよびidフィールドは UNIQUE であり、フィールドtitle_countおよびフィールドは、そのcontent_count単語がタイトルまたはメイン コンテンツで使用された回数を格納するために使用されます。もう 1 つの_countフィールドには、その単語が記事/写真/ビデオで使用された回数が表示されます。

これらすべてのカウント フィールドが検索機能に役立つかどうかはわかりませんが、役立つかもしれないと考えました。

次に、次のようなテーブルのすべての_countフィールドへの複数のリンク テーブルがあります。words

id |  word_id | 
---+----------+
43 |        2 |
 7 |        1 |
 7 |        2 |

これらのテーブルはword_link_titleword_link_contentword_link_articleword_link_photoword_link_videoなどと呼ばれます。idフィールドには、リンク先の記事/写真/ビデオの ID が格納されword_id、リンク先の単語の ID が格納されます。

セットアップがすべて完了したので、ちょっと行き詰まりました。これらすべての数値と調査用語に基づいて、関連するコンテンツをどのように分類すればよいか、明確な考えがありません。

私が計画していることは、複数のタブを備えた検索結果ページです。1 つのタブには検索結果がすべて表示され、他のタブでは記事/写真/ビデオに分けられます。

何かを機能させるために実際に正しい道を進んでいるかどうかはわかりません。誰かが私を助けてくれることを願っています..

4

1 に答える 1

0

それはすべてあなたが望むものに依存します、あなたが結果を提案したいなら、あなたはいくつかの有名な単語検索アルゴリズムを調べたいかもしれません:Jaro-Winklerは短い単語に適していますそしてLevenshteinは長いテキストの短い単語に適しています。これらの以前のアルゴリズムの後で、 PHPのsimilar_text関数を使用してマッチングを改善することもできます。

たくさんの検索スクリプトをここ(Jaro-Winkler)に投稿しました。また、検索エンジンプロジェクトを構築したときに、チェックしたい場合はここに投稿しました

カウントの違いはどうですか?出現回数を使用して、いくつかのキーワードを優先することができます。ただし、データベースに挿入するものには注意してください。「the」や「it」のような単語や、これらすべてを破壊する他の一般的な単語は必要ありません。

編集:もちろん、これは検索がPHPで行われることを意味し、データベースから大量のキーワード(すべてではないにしても)を選択する必要があるという非常に不便です。3000語を超えるデータベースで、最大推定検索時間は0.04秒になりました。だから大丈夫そうです=)

于 2012-07-04T01:22:05.180 に答える