首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复杂的SphinxQL查询

复杂的SphinxQL查询
EN

Stack Overflow用户
提问于 2011-11-20 14:39:55
回答 1查看 1.4K关注 0票数 0

我正在尝试编写一个SphinxQL查询,它将在Sphinx RT索引中复制以下MySQL:

代码语言:javascript
复制
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中得到的:

代码语言:javascript
复制
SELECT id, (intColA = intValA OR intColB = intValB ...) as intCheck FROM rt_index WHERE MATCH('@requiredMatch = requiredValue');

我遇到的问题是匹配所有可能的可选字符串值。可能的最佳查询(如果允许多个匹配语句,并且它们被允许作为表达式)如下所示

代码语言:javascript
复制
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索引不支持这些,我真的不希望切换它们。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-21 05:37:23

一种方法是简单地将所有列转换为普通字段。然后,您可以将所有这些逻辑放入MATCH(..)中。即不使用属性。

是的,每个查询只能有一个匹配项。

否则,是的,您可以使用CRC技巧将字符串属性转换为整数属性,以便用于过滤。

不知道为什么需要MVA,但是2.0.2中的RT索引现在支持它们

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8199922

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档