从Sphinx索引中删除左括号和右括号

从Sphinx索引中删除左括号和右括号,sphinx,Sphinx,我有一个regexp\u过滤器,它在我的文档中查找模式,例如 regexp\u filter=Bob Smith=>Robert Smith 但是,我发现当模式文本位于括号内时,这不起作用,例如 他和我的老板(鲍勃·史密斯)应该 我尝试了一些方法来摆脱( 在停止字中添加了() 添加了不包含paren的自定义字符集 但无论如何,当模式位于括号内时,它们是不匹配的 是否有任何方法可以正确执行此操作 更新是,连字符也会发生同样的情况。即使我在Stopwords或Charset中明确删除它们,或者甚至创

我有一个
regexp\u过滤器
,它在我的文档中查找模式,例如

regexp\u filter=Bob Smith=>Robert Smith

但是,我发现当模式文本位于括号内时,这不起作用,例如

他和我的老板(鲍勃·史密斯)应该

我尝试了一些方法来摆脱

  • 在停止字中添加了
  • 添加了不包含paren的自定义字符集
  • 但无论如何,当模式位于括号内时,它们是不匹配的

    是否有任何方法可以正确执行此操作

    更新是,连字符也会发生同样的情况。即使我在
    Stopwords
    Charset
    中明确删除它们,或者甚至创建一个regexp来删除它们

    regexp\u过滤器=-=>

    它们被编入索引并打破任何正则表达式,特别是有单词边界的正则表达式

    因此:

    regepx\u过滤器=\bBob\b=>Robert

    在文本中失败,如“收件人:Bob Mark John”`


    `

    如果在charset_表中添加括号(表示它是与“a”类似的有效字符),则表示(Bob Smith)变为(Robert Smith)。 “
    Robert Smith
    ”将不匹配“
    (Robert Smith)
    ”。只有启用内插并执行通配符搜索(如“
    *Robert Smith*
    ”),才能进行此匹配


    只有在确定需要特殊字符作为用于构造单词的有效字符时,才应向chartset_表中添加特殊字符。

    是的,我刚刚发现了这一点。问题是,无论我如何使用连字符,它都不会充当单词分隔符。我尝试将其作为忽略字符,但发现这会将“abc def”变成“abcdef”,而不是应该使用的字符当连字符不在字符集中时发生“abc def”。然而,很明显,连字符不起单词分隔符的作用,即使a)不在字符集中b)不忽略字符。忽略字符去掉字符-这意味着被忽略的字符变为“空”,因此前后的字符都被粘合(!)。忽略字符不是分词符。分词符是任何未声明的字符。如果在搜索字符串中使用连字符,请尝试转义它(因为连字符是语法运算符)。你在SHOW META中得到了什么?确保源代码中没有额外的新行(即换行),例如,如果Bob和Smith之间有新行,正则表达式将不匹配。(regexp_过滤器适用于原始输入文本,而不是根据字符集_表对其进行标准化(标记化)后。