Sphinx:sphinxql中的OR运算符

Sphinx:sphinxql中的OR运算符,sphinx,sphinxql,Sphinx,Sphinxql,我的数据库中有一个日期字段(Start_date),它在sphinx中以sql_field_字符串的形式对其进行索引,其格式如下:2000-12-12。 当我想搜索该字段时,我会提交如下查询: select * from all where match ('@Start_date 2000-12-12'); 它正在工作,但当使用或运算符提交查询时,我遇到了麻烦,这种运算符不会返回任何结果,而实际上有很多结果: select * from all where match ('@Start_da

我的数据库中有一个日期字段(Start_date),它在sphinx中以sql_field_字符串的形式对其进行索引,其格式如下:2000-12-12。 当我想搜索该字段时,我会提交如下查询:

select * from all where match ('@Start_date 2000-12-12'); 
它正在工作,但当使用或运算符提交查询时,我遇到了麻烦,这种运算符不会返回任何结果,而实际上有很多结果:

select * from all where match ('@Start_date 2000-12-12 | 1999-12-12');
当我用括号表示值时,问题就解决了

select * from all where match ('@Start_date (2000-12-12) | (1999-12-12)');
为什么会这样

(我已将“-”字符添加到我的charset_表中)

从sphinx.conf文件:

dict = crc
min_infix_length=3

在将-添加到charset_表之后,是否重新生成了索引(并允许searchd加载它!)?是的。在更改charset_表值时,我应该使用'-'字符的unicode还是'-'字符本身?我使用了这个值:charset_table=-,1..9,englishwell理论上只是一个vanila-应该可以,它不能被误解为语法(比如逗号和点),但是放置U+2D会更安全。但它可能只是-也是扩展的语法运算符,所以你可能需要逃避它<代码>匹配(“@Start_date 2000\\-12\\-12 | 1999\\-12\\-12”)-双斜杠,也需要作为SQL字符串的一部分进行转义!)转义无法解决问题,结果与使用括号时不同。很奇怪!