Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 思考“斯芬克斯”;以“u”开头;查询_Ruby On Rails_Thinking Sphinx - Fatal编程技术网

Ruby on rails 思考“斯芬克斯”;以“u”开头;查询

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 或者您可以将其放在

我需要思考斯芬克斯查询来检索“开始于”值。 意思是如果我给Student.search“a”,我想显示所有名字以a开头的学生。 我已经为“姓名”字段编制了索引。现在,要检索学生,我必须给出确切的姓名。

听起来像是你想要的。将此文件添加到您的
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*'
希望这能帮助你获得你想要的结果:)