0

私は自分のウェブサイトの検索エンジンをPHP、SQL、JQueryでプログラミングしています。データベース内の既存のデータでオートコンプリートを追加した経験があります(つまり、記事のタイトルを検索します)。しかし、ユーザーが入力する最も一般的な検索クエリ(Googleが持っているものと同様のもの)を使用したい場合はどうでしょうか。データの作成に貢献するユーザーはそれほど多くありません(最も一般的なクエリ)。オートコンプリートデータを含むオープンソースのSQLテーブルなどはありますか?

4

4 に答える 4

1
  1. 現在のところ、オートコンプリート用に持っている静的データを使用してください。
  2. データベースに別のテーブルを作成して、実際のユーザークエリを保存します。テーブルのスキーマは、<queryID, query, count>同じクエリが他のユーザーによって提供されるたびにカウントが増分される場所にすることができます[ランクの種類]。N-Gram Index(つまり、開始文字列だけでなく、「United」と入力したときに「Manchester United」のようなものをオートコンプリートできるようにするため)クエリを実行し、countを使用して並べ替えた後に上位Nを返すだけです。
  3. 上記の表は、ユーザーベースが増加し始めると徐々に改善され続けます。
  4. もう1つ、タスクを実行するためのアルゴリズムは非常に単純です。ただし、実際の課題は、表示されるデータを数秒で返すことにあります。したがって、クエリデータベース/ストアのサイズが大きくなった場合は、Solr / Sphinxなどの検索エンジンを使用して検索できます。これにより、レンダリングされる結果をすばやく返すことができます。
于 2012-12-11T07:46:30.893 に答える
0

Googleには、(日、時間、地理的位置、言語など)に従って配置された何千ものエントリがあり、ユーザーが単語を入力するたびに、システムが「主に」のテーブルをチェックするたびに、ユーザーのエントリによって増加しています。使用された単語はその場所に属していました+日+時間"+(答えがない場合)そして"一般的な単語"。そのためには、ユーザーが入力したすべての単語を分類するか、データベースの一般的な単語関係テーブルを作成する必要があります。ここで、最も適切な検索された回答が参照されます。

于 2012-12-09T19:53:06.653 に答える
0

Luceneこの機能にはLuceneSearchEngiineを使用できます。このリンクを参照してください

または、LuceneSolrオートコンプリートを確認することもできます...

于 2012-12-09T19:48:41.267 に答える
0

昨日、私は自分の質問に答える何かに出くわしました。GoogleはこのXMLファイルからオートコンプリートの提案を描画するため、キーワードを使用して独自のデータベースを作成するユーザーが少ない場合は、このファイルを使用することをお勧めします。

http://google.com/complete/search?q=[keyword]&output=toolbar  

[keyword]をいくつかの単語に置き換えるだけで、その単語に関する提案が得られます。その後、taksは、返されたxmlを解析し、ニーズに合わせて出力をフォーマットするだけです。

于 2012-12-20T09:31:03.113 に答える