質問

検索を実行すると、関連する検索がリストされる、つまり、興味がありそうな他の検索クエリを提案するサイトをいくつか見たことがあります。

中規模のサイト(訪問者の統計に依存して関係を推測するのに十分なトラフィックがない)でこれをモデル化する最良の方法を疑問に思っています。私の最初の考えは、一意のクエリごとに上位 10 件の結果を保存し、その後、新しい検索を実行して、上位 10 件の結果の一部に一致するが、理想的にはそれらのすべてに一致しないすべての履歴検索を見つけることです (すべてに一致する可能性がある)同等の検索を提案するため、提案としてはあまり役に立ちません)。

以前にこの機能を実行したことがあり、これを実行するためのさまざまな方法のアイデアを提供できる人もいると思います。解決策は間違いなくサイトの規模と性質によって大幅に異なるため、必ずしも 1 つの優れたアイデアを探しているわけではありません。

役に立ちましたか?

解決

キーワードを 1 軸に持つマトリックスと、別の軸上のドキュメント。キーワードを表すベターのセットを見つけたら、最初の結果セットで見つかったキーワードのセットを見つけて、それらが参照するドキュメントの数、またはそれらが最初の結果セットと交差する回数によって他のキーワードをランク​​付けする方法を見つけます。 。

他のヒント

私はこれに対してさまざまなアプローチを試してきましたが、さまざまな程度の成功を収めました。結局のところ、最善のアプローチは、検索対象のドメイン/トピック、およびユーザーがどのようにクエリを作成するかに大きく依存すると思います。

以前の検索を保存するというあなたの考えは、私には合理的だと思います。私はそれが実際にどのように機能するのかを知りたいと思っています(これは最も誠実な意味で、「現実の世界」、特にデータがまばらな場合には、これらの手法が失敗する原因となる可能性のある多くの微妙な違いがあります)。

私が過去に使用したり、文献で見たりしたテクニックをいくつか紹介します。

  1. シソーラスベースのアプローチ:ユーザーが使用した用語ごとにシソーラスのインデックスを作成し、ヒューリスティックを使用して同義語をフィルタリングし、検索可能な用語としてユーザーに表示します。
  2. それをステムにして検索します。検索語の語幹を立てます (例:とともに ポーターステミングアルゴリズム 次に、最初に提供されたクエリの代わりに語幹抽出された用語を使用し、ユーザーに検索オプションを与えます。 その通り 指定した用語 (またはその逆、最初に正確な用語を検索し、ステミングを使用して同じルートに由来する用語を見つけます)。この 2 番目のアプローチでは、明らかに既知の辞書の前処理が必要になります。あるいは、インデックス用語が検索したときに用語を収集することもできます)。
  3. 連鎖:ユーザーのクエリで見つかった結果を解析し、上位 N 件の結果から重要な用語を抽出します (KEA は、キーワード抽出技術を調べるために参照できるライブラリ/アルゴリズムの 1 つです)。
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top