如何让Sphinx停止忽略空格?

时间:2017-07-01 13:34:06

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

我在我的Rails项目中使用Sphynx和ThinkingSphynx。有什么方法可以让Sphynx停止忽略空间,以便" Foo"钥匙会找到我" Foo Bar"并且不会找到我,例如" foo@bar.com" ?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

我已经为indice添加了blend_chars选项,并且所有内容都根据需要开始工作:

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

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