Response times ebb and flow - you're just lucky you caught me at the  
latter :)

You've provided Member.sphinx_search, but you're using  
Search.member_search_sphinx - got the code for the latter?

Also, it seems the error is happening when the latitude attribute is  
being set - you don't actually need the set_property calls for the lat/ 
lng attributes, because your names for them are guessable by Thinking  
Sphinx. If you wish to keep them anyway, try having the values as  
symbols, not strings (not that it should make a difference, especially  
if everything works in development).

Cheers

-- 
Pat

On 30/07/2009, at 4:49 PM, Andrew Lippert wrote:

>
> Pat,
>
> I'm amazed at your response time!
>
> Everything is working fine in development. It is only the production
> server that is having problems. So, I'm sure I've missed something
> crucial.
>
> Here's the code:
>
> Model -
>
>  define_index do
>    # fields
>    indexes first_name
>    indexes last_name
>    indexes [first_name, last_name], :as => :full_name
>    indexes permalink
>    indexes primary_business_title
>    indexes primary_business_location
>    indexes what_i_do
>    indexes needs
>    indexes specialties
>    indexes experience
>    indexes education
>    indexes categories.name, :as => :categories
>    indexes taggings.tag.name, :as => :tags
>
>    # attributes
>    has membership_level_id, participation_points
>    has '(membership_level_id + has_primary_image * 150) + IFNULL
> (participation_points + 1, 1)', :as => :rating, :type => :integer
>    has 'RADIANS(primary_business_lat)', :as => :lat,  :type => :float
>    has 'RADIANS(primary_business_long)', :as => :lng,  :type
> => :float
>
>    # properties
>    set_property :latitude_attr  => 'lat'
>    set_property :longitude_attr => 'lng'
>    set_property :field_weights => {:categories =>
> 5, :primary_business_title => 4, :what_i_do => 3}
>    set_property :delta => :delayed
>
>    # filter
>    where "deleted_at IS NULL AND activated_at IS NOT NULL"
>
>  end
>
>  def self.sphinx_search(terms = "", options ={})
>    limit = options.delete(:limit) || self.per_page
>    page = (options.delete(:page) || 1).to_i
>    page = (page < 1) ? 1 : page
>    vip = options.delete(:vip) || false
>    limit = self.vip_per_page if vip
>    fields = options.delete(:fields)
>    distance = options.delete(:distance) || Session.default_distance
> || self.default_distance
>
>    @search_options = { :page => page,
>                        :per_page => limit,
>                        :star => true,
>                        :match_mode => :extended }
>
>    if origin = options.delete(:origin)
>      lat = (origin[0] / 180.0) * Math::PI
>      lng = (origin[1] / 180.0) * Math::PI
>      distance = distance.to_i * 1609.344
>      @search_options.merge!(:geo => [lat, lng], :with => { "@geodist"
> => 0.0..distance })
>    end
>
>    if vip
>      @search_options.merge!(:without => { :membership_level_id =>
> 1..2 })
>    end
>
>    @search_options.merge!(:sort_mode => :expr,
>                           :sort_by => '@weight * 1.5 + rating'
>                          )
>
>    results = self.search(terms, @search_options)
>
>  end
>
>
> Controller -
>
>  @members = Search.member_search_sphinx(@tmp_param[:search])
>
>
> View -
>
> members.html.erb:
>
>    <div id="search_results">
>      <%= render :partial => 'members/list', :object => @members %>
>    </div>
>
>
> _list.html.erb
>
> <%-
>
> # members / list
>
>
> list ||= @members
> paginate = true if paginate.nil?
> size ||= 'icon'
> up ||= 3
>
> # little shortcut
> is_cat = (params[:action] == "category")
> num_per_page = is_cat ? Member.per_cat_page : Member.per_page
> path = is_cat ? "/#...@city[:name].downcase.gsub(/\s/, '-')}/#
> {[email protected]}" : search_path('members')
>
> if list.total_entries > 0
>
> -%>
>
>
> Exception:
>
> ActionView::TemplateError: You have a nil object when you didn't
> expect it! You might have expected an instance of Array. The error
> occurred while evaluating nil.length
>
> On line #16 of app/views/members/_list.html.erb
>
> 13: num_per_page = is_cat ? Member.per_cat_page : Member.per_page
>
> 14: path = is_cat ? "/#...@city[:name].downcase.gsub(/\s/, '-')}/#
> {[email protected]}" : search_path('members')
>
> 15:
>
> 16: if list.total_entries > 0
>
> 17:
>
> 18: -%>
>
> 19:
>
> [GEM_ROOT]/gems/freelancing-god-thinking-sphinx-1.2.1/lib/./vendor/
> riddle/lib/riddle/client/message.rb:20:in `send'
>
> [GEM_ROOT]/gems/freelancing-god-thinking-sphinx-1.2.1/lib/./vendor/
> riddle/lib/riddle/client/message.rb:20:in `append_string'
>
> [GEM_ROOT]/gems/freelancing-god-thinking-sphinx-1.2.1/lib/./vendor/
> riddle/lib/riddle/client.rb:531:in `query_message'
>
> [GEM_ROOT]/gems/freelancing-god-thinking-sphinx-1.2.1/lib/./vendor/
> riddle/lib/riddle/client.rb:286:in `query'
>
> [GEM_ROOT]/gems/freelancing-god-thinking-sphinx-1.2.1/lib/
> thinking_sphinx/search.rb:203:in `populate'
>
> [GEM_ROOT]/gems/freelancing-god-thinking-sphinx-1.2.1/lib/
> thinking_sphinx/search.rb:279:in `call'
>
> [GEM_ROOT]/gems/freelancing-god-thinking-sphinx-1.2.1/lib/
> thinking_sphinx/search.rb:279:in `retry_on_stale_index'
>
> [GEM_ROOT]/gems/freelancing-god-thinking-sphinx-1.2.1/lib/
> thinking_sphinx/search.rb:200:in `populate'
>
> [GEM_ROOT]/gems/freelancing-god-thinking-sphinx-1.2.1/lib/
> thinking_sphinx/search.rb:149:in `total_entries'
>
> app/views/members/_list.html.erb:16
>
> app/views/search/members.html.erb:14
>
> app/views/search/members.html.erb:12
>
> app/controllers/search_controller.rb:101:in `members'
>
>
>
> Thank you for taking a look!!
>
>
> On Jul 30, 8:35 am, Pat Allan <[email protected]> wrote:
>> Hi Andrew
>>
>> What's the output from production.log? And what's the line of code
>> where you're calling the search method?
>>
>> --
>> Pat
>>
>> On 30/07/2009, at 4:25 PM, Andrew Lippert wrote:
>>
>>
>>
>>
>>
>>> I have a properly configured and functioning development environment
>>> configured with the latest Ruby Enterprise, Passenger, Thinking
>>> Sphinx, Sphinx, etc. Everything works fine.
>>
>>> I have deployed to production. All software installs went well,
>>> migrations applied, etc.
>>
>>> I am able to successfully run searchd against a newly created index
>>> built using the rake tasks. I can use console to search my model
>>> successfully. HOWEVER, when access the application I am getting nil
>>> results returned to the views causing all sorts of exceptions.
>>
>>> Here's the sphinx.yml -
>>
>>> production:
>>>    enable_star: 1
>>>    min_prefix_length: 3
>>>    min_infix_length: 4
>>>    morphology: stem_en
>>>    config_file: /home/www/biznik.com/shared/config/
>>> production.sphinx.conf
>>>    searchd_file_path: /home/www/biznik.com/shared/db/sphinx/
>>> production
>>>    searchd_log_file: /home/www/biznik.com/shared/log/searchd.log
>>>    query_log_file: /home/www/biznik.com/shared/log/searchd.query.log
>>>    pid_file: /home/www/biznik.com/shared/pids/searchd.production.pid
>>>    bin_path: /usr/local/bin
>>
>>> Samples from the searchd log file look like the service is not being
>>> hit when the model is searched from the production app:
>>
>>> [Thu Jul 30 08:13:52.829 2009] 0.000 sec [scan/2/rel 1 (0,20)]
>>> [member_core]
>>> [Thu Jul 30 08:14:39.027 2009] 0.000 sec [scan/2/rel 1 (0,20)]
>>> [member_core]
>>> [Thu Jul 30 08:17:31.074 2009] 0.000 sec [scan/2/rel 1 (0,20)]
>>> [member_core]
>>> [Thu Jul 30 08:18:03.899 2009] 0.000 sec [scan/2/rel 1 (0,20)]
>>> [member_core]
>>> [Thu Jul 30 08:18:09.384 2009] 0.000 sec [scan/2/rel 1 (0,20)]
>>> [member_core]
>>> [Thu Jul 30 08:18:40.661 2009] 0.000 sec [scan/2/rel 1 (0,20)]
>>> [member_core]
>>> [Thu Jul 30 08:19:11.654 2009] 0.000 sec [scan/2/rel 1 (0,20)]
>>> [member_core]
>>> [Thu Jul 30 08:20:35.390 2009] 0.000 sec [scan/2/rel 1 (0,20)]
>>> [member_core]
>>> [Thu Jul 30 08:20:38.376 2009] 0.000 sec [scan/2/rel 1 (0,20)]
>>> [member_core]
>>> [Thu Jul 30 08:20:50.652 2009] 0.000 sec [scan/2/rel 1 (0,20)]
>>> [member_core]
>>> [Thu Jul 30 08:21:00.504 2009] 0.000 sec [scan/2/rel 1 (0,20)]
>>> [member_core]
>>> [Thu Jul 30 08:21:04.625 2009] 0.000 sec [scan/2/rel 1 (0,20)]
>>> [member_core]
>>> [Thu Jul 30 08:21:33.066 2009] 0.000 sec [scan/2/rel 1 (0,20)]
>>> [member_core]
>>> [Thu Jul 30 08:22:30.614 2009] 0.000 sec [scan/2/rel 1 (0,20)]
>>> [member_core]
>>> [Thu Jul 30 08:22:45.863 2009] 0.000 sec [scan/2/rel 1 (0,20)]
>>> [member_core]
>>> [Thu Jul 30 08:23:30.611 2009] 0.000 sec [scan/2/rel 1 (0,20)]
>>> [member_core]
>>
>>> The db paths are properly symlinked to the current app/db directory.
>>> The searchd location is referenced in the sphinx.yml file for delta
>>> indexing. I have configured delayed deltas and do see the entries
>>> being made in the delayed_jobs table. They are properly processed  
>>> when
>>> the rake task runs.
>>
>>> I've been searching all night for pointers without luck. Any
>>> assistance would be greatly appreciated.
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Thinking Sphinx" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/thinking-sphinx?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to