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 であることはわかっていますが、変換方法がわかりません。/2s などを追加して複数形にすることができることはわかっていますが、実際には、複数の単一のキャプチャ グループであり、そのグループを置き換えたいだけなので、実際にどのように置き換えることができますか?