Ruby on rails 思考“斯芬克斯”;以“u”开头;查询
我需要思考斯芬克斯查询来检索“开始于”值。 意思是如果我给Student.search“a”,我想显示所有名字以a开头的学生。 我已经为“姓名”字段编制了索引。现在,要检索学生,我必须给出确切的姓名。听起来像是你想要的。将此文件添加到您的Ruby on rails 思考“斯芬克斯”;以“u”开头;查询,ruby-on-rails,thinking-sphinx,Ruby On Rails,Thinking Sphinx,我需要思考斯芬克斯查询来检索“开始于”值。 意思是如果我给Student.search“a”,我想显示所有名字以a开头的学生。 我已经为“姓名”字段编制了索引。现在,要检索学生,我必须给出确切的姓名。听起来像是你想要的。将此文件添加到您的config/sphinx.yml文件中,或者在您还没有文件的情况下创建它: development: enable_star: 1 min_prefix_len: 1 # repeat for other environments 或者您可以将其放在
config/sphinx.yml
文件中,或者在您还没有文件的情况下创建它:
development:
enable_star: 1
min_prefix_len: 1
# repeat for other environments
或者您可以将其放在特定索引中-因为中缀/前缀设置会显著增加索引的大小:
define_index do
# ...
set_property :enable_star => 1
set_property :min_prefix_len => 1
end
然后,运行rake ts:rebuild
,让Sphinx知道这些更改并在索引中进行处理,然后您可以这样搜索:
Student.search 'a*'
# or
Student.search :conditions => {:name => 'a*'}
如果您使用min_infix_len而不是min_prefix_len,您还可以在单词中匹配,也就是说,将星号放在任意一侧:
Student.search '*a*'
最后-如果您始终希望查询在每个术语的每一端都有通配符星号,请在搜索中使用:star=>true
:
Student.search 'a b c', :star => true
# is the same as
Student.search '*a* *b* *c*'
希望这能帮助你获得你想要的结果:)