【问题标题】:How do I make Sphinx stop ignoring spaces?如何让 Sphinx 停止忽略空格?
【发布时间】:2017-07-01 13:34:05
【问题描述】:

我在我的 Rails 项目中使用了 Sphynx 和 ThinkingSphynx。有什么方法可以让 Sphynx 停止忽略空格,以便“Foo”键会找到我“Foo Bar”而不会找到我,例如“foo@bar.com”?

【问题讨论】:

    标签: ruby-on-rails sphinx thinking-sphinx


    【解决方案1】:

    Sphinx 实际上将@ 视为非索引字符,与. 相同,因此它们成为单词分隔符。因此,“foo@bar.com”实际上被索引为“foo bar com”。

    如果您希望“foo@bar.com”保持原样,那么您应该在每个环境的config/thinking_sphinx.yml 中将@. 添加到您的charset_table 值中。我这里的例子是默认设置,加上最后这两个字符的 unicode 值(40 是@,AD 是。)。

    development:
      charset_table: 0..9, A..Z->a..z, _, a..z, U+410..U+42F->U+430..U+44F, U+430..U+44F, U+401->U+451, U+451, U+0040, U+00AD
    

    另一种方法是将这些字符添加到 ignore_chars 选项中。这样,它们在索引数据中被删除,因此“foo@bar.com”变为“foobarcom”:

    development:
      ignore_chars: U+0040, U+00AD
    

    请记住,这两个设置都会影响索引数据中的那些字符无处不在,而不仅仅是电子邮件地址(不,您不能在每个字段的基础上设置它们) .

    【讨论】:

      【解决方案2】:

      我已将 blend_chars 选项添加到 indice 并且一切都开始按需要工作:

      set_property :blend_chars => 'U+20, @, .'
      

      U+20 实际上是一个空格。

      【讨论】:

        猜你喜欢
        • 2021-12-31
        • 1970-01-01
        • 1970-01-01
        • 2010-09-17
        • 1970-01-01
        • 2011-02-05
        • 1970-01-01
        • 2012-10-06
        • 1970-01-01
        相关资源
        最近更新 更多