我在Sphinx中使用regexp_filter替换术语
在大多数情况下,我可以这样做,例如拼写错误很容易:
regexp_filter = Backround => Background
甚至使用捕获组符号进行交换:
regexp_filter = (Left)(Right) => \2\1
然而,当我使用模式匹配来查找我要替换的给定单词时,我遇到了更多的麻烦:
regexp_filter = (PatternWord1|PatternWord2)\W+(?:\w+\W+){1,6}?(SearchTerm)\b => NewSearchTerm
其中NewSearchTerm将是我只想用\2替换的术语(只留下\1和模式的其余部分)。所以
所以如果我有短信
'Pizza and Taco Parlor'
那么:
regexp_filter = (Pizza)\W+(?:\w+\W+){1,6}?(Parlor)\b => Store
将转换为
'Pizza and Taco Store'
我知道在这种情况下SearchTerm是/2,但不确定如何转换。我知道我可以加上例如/2,使其复数,但实际上我如何替换它,因为它只是一个由几个捕获组组成的捕获组,而我只想替换该组?