我试图将我的数据库中的节目的开始时间从各种符号映射到houram / pm,所以我制作了一个regexp_filter:
regexp_filter = ([0-9]|10|11|12)( a|a)(.)?(m)(.)? =>\1am
似乎与查询一起运作
select ID,Name from idx_Table WHERE (MATCH('"8am"'))
但突然间我一直在
[Err] 1064 - index idx_Table: syntax error, unexpected $end near ''
如果我删除"来自查询并执行
select ID,Name from idx_Table WHERE (MATCH('8am'))
它有效。
如果我改变了" am"到" AM"并保留报价
select ID,Name from idx_Table WHERE (MATCH('"8AM"'))
它有效(???)这很奇怪,因为据我所知,Sphinx不区分大小写。
最后,如果我注释掉regex_p,它就可以了。任何想法,因为我正式难倒。
更新: 以某种方式思考"在查询中引入错误然后删除它们,但是现在我得到的错误是
[Err] 1064 - 索引idx_Tabke:语法错误,意外' /'靠近' / 2(披露)
所以regex_p中的某些东西似乎引入了一个sphinx不喜欢的角色?
答案 0 :(得分:0)
最后的点匹配'吞下''am'之后的任何字符。因此,在您的情况下,“从查询中删除”。如果确实要删除某些内容,请更具体,以便不匹配“
此外,sphinx区分大小写,其设置charset_table正常。正则表达式也区分大小写,这就是AM没有被替换的原因。