无法搜索特定索引

发布于 2024-10-17 14:33:07 字数 1949 浏览 4 评论 0原文

模型:

class TechRequest < ActiveRecord::Base
...
  define_index do
  ...
    indexes  :hot_request
    indexes :status_id, :as => :current_status_id
  ...
    has :hot_request , :as => :hot_request
    set_property :delta => true
  end

DB:

hot_request - tinyint(1)

当我执行控制器代码时,

@query_string = '(@hot_request 1)(@current_status_id 1 | 2 | 3)'
@tech_requests = TechRequest.search @query_string, :match_mode => :extended

会抛出以下错误:

ThinkingSphinx::SphinxError: index tech_request_core,tech_request_delta: query error: no field 'tech_hot_request' found in schema
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/lib/thinking_sphinx/search.rb:392:in 'populate'
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/lib/thinking_sphinx/search.rb:508:in 'call'
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/lib/thinking_sphinx/search.rb:508:in 'retry_on_stale_index'
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/lib/thinking_sphinx/search.rb:379:in 'populate'
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/lib/thinking_sphinx/search.rb:167:in 'method_missing'
        from D:/ruby/lib/ruby/1.8/irb.rb:302:in 'output_value'
        from D:/ruby/lib/ruby/1.8/irb.rb:151:in 'eval_input'
        from D:/ruby/lib/ruby/1.8/irb.rb:263:in 'signal_status'
        from D:/ruby/lib/ruby/1.8/irb.rb:147:in 'eval_input'
        from D:/ruby/lib/ruby/1.8/irb.rb:146:in 'eval_input'
        from D:/ruby/lib/ruby/1.8/irb.rb:70:in 'start'
        from D:/ruby/lib/ruby/1.8/irb.rb:69:in 'catch'
        from D:/ruby/lib/ruby/1.8/irb.rb:69:in 'start'
        from D:/ruby/bin/irb:13

当我使用 hot_request 作为属性时,搜索工作正常。这 当我使用 @query_string = '(@current_status_id 1 | 2 | 3)' 时,搜索也可以正常工作。

Model:

class TechRequest < ActiveRecord::Base
...
  define_index do
  ...
    indexes  :hot_request
    indexes :status_id, :as => :current_status_id
  ...
    has :hot_request , :as => :hot_request
    set_property :delta => true
  end

DB:

hot_request - tinyint(1)

When I execute the controller code-

@query_string = '(@hot_request 1)(@current_status_id 1 | 2 | 3)'
@tech_requests = TechRequest.search @query_string, :match_mode => :extended

the following error is thrown up:

ThinkingSphinx::SphinxError: index tech_request_core,tech_request_delta: query error: no field 'tech_hot_request' found in schema
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/lib/thinking_sphinx/search.rb:392:in 'populate'
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/lib/thinking_sphinx/search.rb:508:in 'call'
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/lib/thinking_sphinx/search.rb:508:in 'retry_on_stale_index'
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/lib/thinking_sphinx/search.rb:379:in 'populate'
        from D:/Current/TechAssistTest/vendor/plugins/thinking-sphinx/lib/thinking_sphinx/search.rb:167:in 'method_missing'
        from D:/ruby/lib/ruby/1.8/irb.rb:302:in 'output_value'
        from D:/ruby/lib/ruby/1.8/irb.rb:151:in 'eval_input'
        from D:/ruby/lib/ruby/1.8/irb.rb:263:in 'signal_status'
        from D:/ruby/lib/ruby/1.8/irb.rb:147:in 'eval_input'
        from D:/ruby/lib/ruby/1.8/irb.rb:146:in 'eval_input'
        from D:/ruby/lib/ruby/1.8/irb.rb:70:in 'start'
        from D:/ruby/lib/ruby/1.8/irb.rb:69:in 'catch'
        from D:/ruby/lib/ruby/1.8/irb.rb:69:in 'start'
        from D:/ruby/bin/irb:13

The search works fine when I use hot_request as an attribute. The
search also works fine when I use @query_string = '(@current_status_id 1 | 2 | 3)'.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不弃不离 2024-10-24 14:33:07

我刚刚遇到了类似的问题 - 我可以看到这个错误有两个可能的原因。首先是根据 http://sphinxsearch.com/forum/view.html?id=第2103章 你可以使用sql列作为字段或属性,但不能同时使用两者(不克隆它)。另一个让我困惑了一段时间的问题是你可能需要指定类型 - 所以如果 hot_request 实际上是一个整数,你可能需要有像

索引 hot_request :as =>; 这样的东西。小时,:类型=> :整数

或者您收到神秘的错误消息

希望这对某人有帮助......

I've just run into similar looking problems - there are two possible reasons why this errors that I can see. First is that according to http://sphinxsearch.com/forum/view.html?id=2103 you can use an sql column as a field or an attribute but not both (without cloning it). The other, which had me baffled for a while, is that you may need to specify the type - so if hot_request is actually an integer, you probably need to have something like

indexes hot_request :as => hr, :type => :integer

or you get that cryptic error message

Hope this helps someone ...

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文