0

私は2つの主要な文字列AとBを検索する必要がある検索バーを実装しています次のように結果を優先します(最も重要なものから順に)

  1. AとBを組み合わせた結果
  2. Bのみの結果
  3. Aのみの結果

たとえば、「エジプト」+「ピラミッド」を検索すると、最初の結果は「エジプトのピラミッド」のようなものになり、次に「ピラミッド」全般または幾何学的形状などに関する結果が続きます..、最後に「エジプト」の検索結果

Google や Bing などのいくつかの検索 API を試しています。現在行っていることは、最初に両方を検索して結果セット X を取得し、次に B のみを検索してポジティブ リストと呼ばれるものを取得し、次に A のみを検索して a を取得することです。ネガティブリスト..結果をXにスコア付けし、ネガティブリストに存在する場合はペナルティを課し、ポジティブリストに存在する場合はボーナスを与え、最後にポジティブリストに残っているものをXに追加します..

それはうまく機能しますが、それでも十分ではありません。誰かがこの単純なアルゴリズムに追加するか、まったく異なるアイデアを手伝ってくれるかどうか疑問に思っていました

4

1 に答える 1

0

このような作業には「セット」と呼ばれるものを使用する必要があります。http://en.wikipedia.org/wiki/Set_%28computer_science%29

「エジプト」+「ピラミッド」を検索する場合は、個々の検索用語ごとに「セット」を作成します。最も重要な結果は、(「エジプト」セットと「ピラミッド」セットの両方で) セットの「交差」と呼ばれるものにあります。

優先度の低い結果は、セットの「相対補完」と呼ばれるものにあります。A になかったものをすべて B に入れたいとします。これを B における A の相対的補数と呼びます)。

ほとんどのプログラミング言語には、(最適化された) セットを実装するライブラリ/パッケージがあります。

于 2011-11-08T19:35:43.767 に答える