我有基于其参数创建sphinx查询的函数。 AND和OR可以嵌套,并定义特定的字段。
非常简单的例子: 带有索引标题和内容的文章。 (标题:('aaa'和'bbb'))和'ccc' 自然会创造: “(@title aaa bbb)ccc”
它不起作用,因为@ title的效果并不以右括号结束,而是以“ccc”结尾。正确的查询将是: “@title aaa bbb @ * ccc”或“ccc @title aaa bbb” 但是我既不控制命令也不控制术语的嵌套,所以生成“@title aaa bbb”的部分不知道以后是否会有“非字段ccc”,并且总是放“@ *”,以防万一,也是失败,这是它的最后一个任期。
有没有办法安全地附上@field选择器效果?
编辑: 此问题仅与2.1.7之前的版本相关。 事实证明,sphinx中存在一个与组内字段选择器相关的错误,该错误已在2.1.7中修复:
答案 0 :(得分:1)
为什么不做你已经找到的(@title aaa bbb) ccc
?即如果是字段搜索,只需括在括号中。
简单有效。
或
总是加上“@ *”,以防万一,在上一学期也失败了。
如果是最后一个术语,只需删除它,在大多数语言中都很容易从字符串末尾删除一些内容。