Mysql 与Sphinx的匹配结果错误
sphinx配置中的Mysql查询:Mysql 与Sphinx的匹配结果错误,mysql,sphinx,Mysql,Sphinx,sphinx配置中的Mysql查询: SELECT c.id, c.name, p.vendor FROM categories AS c LEFT JOIN ( SELECT DISTINCT vendor, category_id FROM clothes ) p ON c.id = p.category_id ORDER BY c.name 查询给出了这样的结构(我把这个结果称为A):
SELECT
c.id,
c.name,
p.vendor
FROM
categories AS c
LEFT JOIN (
SELECT DISTINCT
vendor,
category_id
FROM
clothes
) p ON c.id = p.category_id
ORDER BY
c.name
查询给出了这样的结构(我把这个结果称为A):
Sphinx匹配模式为SPH_match_ANY。
当我试图进行查询('dress')
时,问题就开始了,结果是
178 dress Liu Jo Jeans
190 dress Moda Corazon
但我需要name
或vendor
字段包含“dress”(预期结果A不带靴子)的所有结果
我做错了什么?提前谢谢
达尼洛·布斯托斯的更新类别结构:
id(整数,自动递增)、name(varchar,255)、parent\u id(整数)
服装结构:
id(整数,自动递增)、name(varchar,255)、vendor(varchar,255)
预期结果:
id name vendor
178 dress Liu Jo Jeans
178 dress Bergamoda
178 dress Rifle
190 dress Moda Corazon
190 dress Bergamoda
您的主要问题之一是sphinx中的“文档id”应该是唯一的。您似乎正在使用category_id。但是,结果A中有多行具有相同id。这会导致Sphinx中出现不可预测的结果 一般来说,您应该使用衣服的id作为document-id。因此可以获得多行,因为它应该是唯一的。如果仍然希望结果集包含category_id,则可以将其放入sphinx属性中
(可能需要更改“内部”查询以获取联接表中的id,使用GROUP BY而不是DISTINCT进行重复数据消除。虽然可能根本不需要重复数据消除,但两个表之间的标准联接可能就可以了)能否复制表的结构并定义预期结果的示例?Main post更新
id name vendor
178 dress Liu Jo Jeans
178 dress Bergamoda
178 dress Rifle
190 dress Moda Corazon
190 dress Bergamoda