我有一个应用程序,人们可以列出要出售/交换/赠送的东西,有200个字符的描述。我们称他们为卖家。
其他用户可以搜索内容 - 让我们称之为买家。
我使用Django,MySQL和Sphinx进行文本搜索系统设置。
让我们说买家正在寻找“T恤”。他们没有得到他们想要的任何结果。我希望该应用程序能够让买家选中一个框来说“告诉我是否有问题”。
然后当卖家列出“Quicksilver T恤”时,这会触发所有已保存搜索的反向搜索,以通知买家已列出与其查询匹配的新商品。
显然,每次列出任何新项目(在循环中)寻找匹配时,我都可以触发Sphinx搜索每个保存的搜索 - 但这将是疯狂和密集的。这是我想要以理智的方式实现的效果 - 我该怎么做?
答案 0 :(得分:2)
你真的建立一个反向索引!
将“搜索”存储在数据库中,并在其上构建索引。
因此'T恤'将成为该指数的一个文件。
然后,在提交新产品时,您将针对此索引运行查询。使用'Quorum'语法甚至匹配任意 - 来获取仅匹配一个关键字的匹配项。
因此,在您的示例中,查询将为"Quicksilver t-shirt"/1
,这意味着匹配Quicksilver
或t-shirt
。但同样适用于更长的标题,甚至整个描述。
该查询的结果将是匹配的(单个单词*)原始搜索的列表。请注意,这也假设您已将索引设置为将-
视为单词char。
Prospective Search
http://en.wikipedia.org/wiki/Prospective_search