0

私は、200 文字の説明を使って、人々が販売/交換/譲渡するものをリストできるアプリを持っています。彼らを売り手と呼びましょう。

他のユーザーは物を検索できます。彼らをバイヤーと呼びましょう。

テキスト検索用に Django、MySQL、および Sphinx を使用してシステムをセットアップしました。

バイヤーが「Tシャツ」を探しているとしましょう。彼らが望む結果は得られません。アプリで、購入者が「何かあったら教えて」というボックスにチェックを入れるオプションを提供してほしい。

次に、売り手が「Quicksilver T シャツ」を出品すると、保存されたすべての検索に対して一種の逆検索がトリガーされ、クエリに一致する新しいアイテムが出品されたことを購入者に通知します。

明らかに、新しい項目が (ループで) リストされるたびに、すべての保存された検索で Sphinx 検索をトリガーして一致を探すことができますが、これは非常識で集中的です。これは私が正気の方法で達成したい効果です - どうすればそれを行うことができますか?

4

1 に答える 1

2

文字通り逆索引を作成します。

「検索」をデータベースに保存し、その上にインデックスを作成します。

したがって、「T シャツ」はこのインデックスのドキュメントになります。

次に、新しい製品が送信されたときに、このインデックスに対してクエリを実行します。'Quorum' 構文または match-any を使用して、1 つのキーワードのみに一致する一致を取得します。

したがって、あなたの例では、クエリ"Quicksilver t-shirt"/1は match QuicksilverORを意味しますt-shirt。しかし、同じことは、はるかに長いタイトル、または説明全体にも当てはまります。

そのクエリの結果は、一致した (単一の単語*) 元の検索のリストになります。これは-、単語 char として扱うインデックス設定があることも前提としていることに注意してください。

  • *より複雑なクエリ、複数のキーワード、または否定と OR ブラケット、フレーズなどを許可する場合は、少し複雑になることに注意してください。ただし、この場合、逆検索 jsut で潜在的な一致が得られるため、それでも一致することを確認する必要があります。まだ多くのクエリがありますが、すべてで実行する必要はありません

ところで、これらの「逆」検索の専門用語はhttp://en.wikipedia.org/wiki/Prospective_searchだと思いますProspective Search

于 2013-04-19T14:47:29.343 に答える