Sphinx 中奇怪的正则表达式匹配错误
Strange regexp match error in Sphinx
我试图将我数据库中节目的开始时间从各种符号映射到 houram/pm 所以我做了一个 regexp_filter:
regexp_filter = ([0-9]|10|11|12)( a|a)(.)?(m)(.)? =>am
这似乎适用于查询
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 不喜欢的角色?
好吧,末尾的点匹配 'swallows' 'am' 之后的任何字符。因此,在您的情况下, " 是查询中的 'removed' 。如果确实要删除某些内容,请更具体一些,以免匹配 "
此外,sphinx 区分大小写,将 charset_table 设置为不区分大小写很正常。正则表达式也区分大小写,这就是 AM 未被替换的原因。
我试图将我数据库中节目的开始时间从各种符号映射到 houram/pm 所以我做了一个 regexp_filter:
regexp_filter = ([0-9]|10|11|12)( a|a)(.)?(m)(.)? =>am
这似乎适用于查询
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 不喜欢的角色?
好吧,末尾的点匹配 'swallows' 'am' 之后的任何字符。因此,在您的情况下, " 是查询中的 'removed' 。如果确实要删除某些内容,请更具体一些,以免匹配 "
此外,sphinx 区分大小写,将 charset_table 设置为不区分大小写很正常。正则表达式也区分大小写,这就是 AM 未被替换的原因。