Sphinx搜索:从索引A结果中排除索引B结果



我的问题是:

我有两个索引:

A -仅产品名称B -产品标题和产品说明

默认情况下,我搜索索引A来对产品进行分类(例如,大多数自行车的标题中都有"bike")。有时在确定类别(可能是某物的子类别)的情况下,我们需要查看描述,主要是为了排除不相关的结果。为了在搜索结果页面上进行分页工作,我需要在运行RunQueries()后将这个干净的结果作为一个数组。

但是它不起作用。它基本上添加了两个查询的结果,看起来没有办法减去结果。有人有什么想法吗?

告诉我,如果我完全错过了一些东西,但它听起来像你试图包括与某个查询匹配的产品标题的结果,并排除与另一个查询匹配的描述的结果?

如果是这种情况,在我看来,有2个索引是无用的,你可以有一个索引与产品标题和描述,然后运行全文搜索查询如下:

@title queryA @description -queryB

您可以使用相同的查询来搜索标题为queryA和描述为queryB的匹配,只需删除-符号。

如果这是错误的,我能想到的唯一的其他方法是使用SphinxQL(我不是很精通任何一个库,因为所有不使用SphinxQL的库的支持将在未来逐步淘汰,据我所知)

使用SphinxQL可以运行两个查询,其中一个类似于

SELECT id FROM indexB WHERE MATCH('@description queryB')

然后使用从第一个查询中获得的id列表运行第二个查询,如

SELECT id FROM indexA WHERE id NOT IN(id1,id2,id3,...)

最新更新