【发布时间】:2011-11-20 06:39:55
【问题描述】:
我正在尝试编写一个 SphinxQL 查询,该查询将在 Sphinx RT 索引中复制以下 MySQL:
SELECT id FROM table WHERE colA LIKE 'valA' AND (colB = valB OR colC = valC OR ... colX = valX ... OR colY LIKE 'valY' .. OR colZ LIKE 'valZ')
如您所见,我正在尝试获取一个字符串列与某个值匹配的所有行,并且匹配一个值列表中的任何一个,它混合并匹配字符串和整数列/值)
这是我迄今为止在 SphinxQL 中所获得的:
SELECT id, (intColA = intValA OR intColB = intValB ...) as intCheck FROM rt_index WHERE MATCH('@requiredMatch = requiredValue');
我遇到的问题是匹配所有潜在的可选字符串值。最好的查询(如果允许多个 MATCH 语句并且它们被允许作为表达式)将类似于
SELECT id, (intColA = intValA OR MATCH('@checkColA valA|valB') OR ...) as optionalMatches FROM rt_index WHERE optionalMatches = 1 AND MATCH('@requireCol requiredVal')
我可以看到一种使用 CRC32 字符串转换和 MVA 属性的潜在方法,但 RT 索引不支持这些,我真的不想从它们切换。
【问题讨论】:
标签: sphinx