Right, that seems fine, so now let's look back within the Rails app. On the server, in 'script/console production', what's the output of the following: Trip.search "Old Melbourne Gaol"
-- Pat On 01/11/2010, at 8:37 PM, Victor wrote: > So I run 'ps aux | grep searchd' > > 1000 17569 0.0 0.2 9168 1144 ? S 04:00 0:00 > searchd --pidfile --config /var/www/abc.com/public/abc/releases/ > 20101008073517/config/production.sphinx.conf > 1000 20220 0.0 0.1 1864 700 pts/0 S+ 17:34 0:00 grep > --color=auto searchd > > Then 'rake ts:rebuild RAILS_ENV=production' > > ** Erubis 2.6.6 > Stopped search daemon (pid 17569). > Generating Configuration to /var/www/abc.com/public/abc/releases/ > 20101008073517/config/production.sphinx.conf > Sphinx 1.10-beta (r2420) > Copyright (c) 2001-2010, Andrew Aksyonoff > Copyright (c) 2008-2010, Sphinx Technologies Inc (http:// > sphinxsearch.com) > > using config file '/var/www/abc.com/public/abc/releases/20101008073517/ > config/production.sphinx.conf'... > indexing index 'spot_core'... > collected 7 docs, 0.0 MB > sorted 0.0 Mhits, 100.0% done > total 7 docs, 5351 bytes > total 0.015 sec, 343828 bytes/sec, 449.78 docs/sec > skipping non-plain index 'spot'... > indexing index 'trip_core'... > collected 3 docs, 0.0 MB > sorted 0.0 Mhits, 100.0% done > total 3 docs, 55 bytes > total 0.004 sec, 13372 bytes/sec, 729.39 docs/sec > skipping non-plain index 'trip'... > total 12 reads, 0.000 sec, 8.1 kb/call avg, 0.0 msec/call avg > total 24 writes, 0.000 sec, 9.0 kb/call avg, 0.0 msec/call avg > Started successfully (pid 20236). > > Then 'ps aux | grep searchd' > > 1000 20236 0.0 0.1 9164 780 pts/0 S 17:35 0:00 > searchd --pidfile --config /var/www/abc.com/public/abc/releases/ > 20101008073517/config/production.sphinx.conf > 1000 20238 0.0 0.1 1860 596 pts/0 S+ 17:37 0:00 grep > --color=auto searchd > > > On Nov 1, 5:32 pm, Pat Allan <[email protected]> wrote: >> Hi Victor >> >> That seems fine... >> What is the output of 'ps aux | grep searchd' before *and* after running >> 'rake ts:rebuild'? >> >> I want to make sure we're dealing with just a single searchd instance that >> is noting the changes. >> >> Cheers >> >> -- >> Pat >> >> On 01/11/2010, at 8:24 PM, Victor wrote: >> >>> Here it is in my production.sphinx.conf instead. >> >>> indexer >>> { >>> } >> >>> searchd >>> { >>> listen = 127.0.0.1:9791 >>> log = /var/www/abc.com/public/abc/releases/20101008073517/log/ >>> searchd.log >>> query_log = /var/www/abc.com/public/abc/releases/20101008073517/log/ >>> searchd.query.log >>> pid_file = /var/www/abc.com/public/abc/releases/20101008073517/log/ >>> searchd.production.pid >>> } >> >>> source spot_core_0 >>> { >>> type = mysql >>> sql_host = localhost >>> sql_user = root >>> sql_pass = >>> sql_db = abc_production >>> sql_query_pre = SET NAMES utf8 >>> sql_query_pre = SET TIME_ZONE = '+0:00' >>> sql_query = SELECT SQL_NO_CACHE `spots`.`id` * 2 + 0 AS `id` , >>> `spots`.`name` AS `name`, `spots`.`address` AS `address`, >>> `spots`.`city` AS `city`, `spots`.`state` AS `state`, >>> `spots`.`country` AS `country`, `spots`.`spot_type` AS `spot_type`, >>> `spots`.`description` AS `description`, `spots`.`id` AS >>> `sphinx_internal_id`, 419485005 AS `class_crc`, 0 AS `sphinx_deleted`, >>> IFNULL(`spots`.`name`, '') AS `name_sort`, `spots`.`rating_average` AS >>> `rating_average` FROM `spots` WHERE `spots`.`id` >= $start AND >>> `spots`.`id` <= $end GROUP BY `spots`.`id` ORDER BY NULL >>> sql_query_range = SELECT IFNULL(MIN(`id`), 1), IFNULL(MAX(`id`), 1) >>> FROM `spots` >>> sql_attr_uint = sphinx_internal_id >>> sql_attr_uint = class_crc >>> sql_attr_uint = sphinx_deleted >>> sql_attr_str2ordinal = name_sort >>> sql_attr_float = rating_average >>> sql_query_info = SELECT * FROM `spots` WHERE `id` = (($id - 0) / 2) >>> } >> >>> index spot_core >>> { >>> source = spot_core_0 >>> path = /var/www/abc.com/public/abc/shared/db/sphinx/spot_core >>> charset_type = utf-8 >>> min_infix_len = 3 >>> enable_star = 1 >>> } >> >>> index spot >>> { >>> type = distributed >>> local = spot_core >>> } >> >>> source trip_core_0 >>> { >>> type = mysql >>> sql_host = localhost >>> sql_user = root >>> sql_pass = Sp[Hry{X~6jjF437[DD >>> sql_db = abc_production >>> sql_query_pre = SET NAMES utf8 >>> sql_query_pre = SET TIME_ZONE = '+0:00' >>> sql_query = SELECT SQL_NO_CACHE `trips`.`id` * 2 + 1 AS `id` , >>> `trips`.`name` AS `name`, `trips`.`duration` AS `duration`, >>> GROUP_CONCAT(DISTINCT IFNULL(`spots`.`name`, '0') SEPARATOR ' ') AS >>> `spot_name`, GROUP_CONCAT(DISTINCT IFNULL(`spots`.`city`, '0') >>> SEPARATOR ' ') AS `spot_city`, GROUP_CONCAT(DISTINCT >>> IFNULL(`spots`.`state`, '0') SEPARATOR ' ') AS `spot_state`, >>> GROUP_CONCAT(DISTINCT IFNULL(`spots`.`country`, '0') SEPARATOR ' ') AS >>> `spot_country`, `trips`.`id` AS `sphinx_internal_id`, 3596900869 AS >>> `class_crc`, 0 AS `sphinx_deleted`, IFNULL(`trips`.`name`, '') AS >>> `name_sort`, `trips`.`budget` AS `budget`, >>> UNIX_TIMESTAMP(`trips`.`created_at`) AS `created_at`, >>> `trips`.`rating_average` AS `rating_average` FROM `trips` LEFT >>> OUTER JOIN `spot_trips` ON (`trips`.`id` = `spot_trips`.`trip_id`) >>> LEFT OUTER JOIN `spots` ON (`spots`.`id` = `spot_trips`.`spot_id`) >>> WHERE `trips`.`id` >= $start AND `trips`.`id` <= $end GROUP BY >>> `trips`.`id` ORDER BY NULL >>> sql_query_range = SELECT IFNULL(MIN(`id`), 1), IFNULL(MAX(`id`), 1) >>> FROM `trips` >>> sql_attr_uint = sphinx_internal_id >>> sql_attr_uint = class_crc >>> sql_attr_uint = sphinx_deleted >>> sql_attr_timestamp = created_at >>> sql_attr_str2ordinal = name_sort >>> sql_attr_float = budget >>> sql_attr_float = rating_average >>> sql_query_info = SELECT * FROM `trips` WHERE `id` = (($id - 1) / 2) >>> } >> >>> index trip_core >>> { >>> source = trip_core_0 >>> path = /var/www/abc.com/public/abc/shared/db/sphinx/trip_core >>> charset_type = utf-8 >>> min_infix_len = 3 >>> enable_star = 1 >>> } >> >>> index trip >>> { >>> type = distributed >>> local = trip_core >>> } >> >>> On Nov 1, 5:19 pm, Pat Allan <[email protected]> wrote: >>>> Hmm, haven't figured out the problem yet. What does your trip_core_0 >>>> source look like in sphinx/development.sphinx.conf? Make sure you remove >>>> the database password :) >> >>>> -- >>>> Pat >> >>>> On 01/11/2010, at 8:15 PM, Victor wrote: >> >>>>> Currently testing with just one or two each, but they are not >>>>> limited. >> >>>>> Some spots are tied to trip_day too, but it's just for order purpose. >>>>> Lemme know if you need to look into that code too. >> >>>>> I also have the following codes: >> >>>>> spot_trip.rb >>>>> ===== >>>>> class SpotTrip < ActiveRecord::Base >>>>> belongs_to :trip >>>>> belongs_to :spot >> >>>>> def spot_name >>>>> spot.name if spot.try(:name) >>>>> end >> >>>>> def spot_type >>>>> spot.spot_type if spot.try(:spot_type) >>>>> end >>>>> end >> >>>>> On Nov 1, 5:08 pm, Pat Allan <[email protected]> wrote: >>>>>> Okay... how many spots are usually tied to a trip? A few? Dozens? >>>>>> Hundred? >> >>>>>> -- >>>>>> Pat >> >>>>>> On 01/11/2010, at 8:02 PM, Victor wrote: >> >>>>>>> Hi Pat, >> >>>>>>> Yes, rebuilt is done, and I did not change the model. >> >>>>>>> Yes, related trip is not being return. >> >>>>>>> For example: >> >>>>>>> Trip: 3 day Victoria trip. >>>>>>> Spots in the trip above: Old Melbourne Gaol, Melbourne Museum, The Art >>>>>>> Gallery >> >>>>>>> Each spot has an individual page of course. >> >>>>>>> When I search Victoria, the trip above will show in result. But if I >>>>>>> search "Old Melbourne Gaol", or any of the spots.name, it returns 0 >>>>>>> result. This actually happens to the site-wide search. >> >>>>>>> By the way, the codes I gave were just snippets, which I think they >>>>>>> are the only one related. >> >>>>>>> Thanks. >> >>>>>>> On Nov 1, 4:57 pm, Pat Allan <[email protected]> wrote: >>>>>>>> Hi Victor >> >>>>>>>> Just to confirm: are you searching for a word that appears in a spot >>>>>>>> name (or city, state, country), and the related trip is not being >>>>>>>> returned? >> >>>>>>>> Have you run 'rake ts:rebuild' since adding those fields? >> >>>>>>>> Cheers >> >>>>>>>> -- >>>>>>>> Pat >> >>>>>>>> On 01/11/2010, at 7:51 PM, Victor wrote: >> >>>>>>>>> Hi Pat, >> >>>>>>>>> I'm using the following: >> >>>>>>>>> Rails 2.3.8, Sphinx 1.10-beta, TS 1.3.20 >> >>>>>>>>> If you looked at the code below, I would like to search Spots >>>>>>>>> (different model) name, city, state, country listed in Trips. Somehow >>>>>>>>> my search filter only works on the name of the Trip, but not the spots >>>>>>>>> in it. >> >>>>>>>>> trip.rb >>>>>>>>> ===== >>>>>>>>> class Trip < ActiveRecord::Base >>>>>>>>> has_many :spots, :through => :spot_trips >> >>>>>>>>> # ThinkingSphinx Index >>>>>>>>> define_index do >>>>>>>>> indexes :name, :sortable => true >>>>>>>>> indexes duration >>>>>>>>> indexes spots.name, :as => :spot_name >>>>>>>>> indexes spots.city, :as => :spot_city >>>>>>>>> indexes spots.state, :as => :spot_state >>>>>>>>> indexes spots.country, :as => :spot_country >>>>>>>>> has budget, created_at, rating_average >>>>>>>>> end >>>>>>>>> end >> >>>>>>>>> trips_controller.rb >>>>>>>>> ======= >>>>>>>>> class TripsController < ApplicationController >>>>>>>>> before_filter :require_user, :except => [:show, :index] >> >>>>>>>>> def index >>>>>>>>> if params[:filter] == 'on' >>>>>>>>> country = params[:country] == 'All' ? {} : {:spot_country => >>>>>>>>> params[:country]} >>>>>>>>> duration = params[:days].blank? ? "" : params[:days] >> >>>>>>>>> if !duration.blank? && country >>>>>>>>> conditions = {:duration => duration}.merge(country) >>>>>>>>> elsif !duration.blank? && country.blank? >>>>>>>>> conditions = {:duration => duration} >>>>>>>>> else country && duration.blank? >>>>>>>>> conditions = country >>>>>>>>> end >> >>>>>>>>> keyword = params[:keyword].blank? ? "" : params[:keyword] >> >>>>>>>>> case params[:order] >>>>>>>>> when 'date_descend' >>>>>>>>> order = {:order => 'created_at DESC'} >>>>>>>>> when 'date_ascend' >>>>>>>>> order = {:order => 'created_at ASC'} >>>>>>>>> when 'rating_descend' >>>>>>>>> order = {:order => 'rating_average DESC'} >>>>>>>>> when 'rating_ascend' >>>>>>>>> order = {:order => 'rating_average ASC'} >>>>>>>>> when 'budget_dscend' >>>>>>>>> order = {:order => 'budget DESC'} >>>>>>>>> when 'budget_ascend' >>>>>>>>> order = {:order => 'budget ASC'} >>>>>>>>> else >>>>>>>>> order = {} >>>>>>>>> end >> >>>>>>>>> results = Trip.search params[:keyword], {:conditions => >>>>>>>>> conditions, :star => true}.merge(order) >>>>>>>>> @trips = results.paginate(:page => params[:page]) >>>>>>>>> else >>>>>>>>> @trips = Trip.paginate(:all, :page => params[:page], :order => >>>>>>>>> 'created_at DESC') >>>>>>>>> end >>>>>>>>> end >> >>>>>>>>> index.html.erb for trip >>>>>>>>> ===== >>>>>>>>> I have these for filters: >> >>>>>>>>> <%= text_field_tag 'keyword' %> >>>>>>>>> <select name="country"> >>>>>>>>> <option>All</option> >>>>>>>>> <option value="Afghanistan">Afghanistan</option> >>>>>>>>> . >>>>>>>>> . >>>>>>>>> </select> >>>>>>>>> <input class="duration" name="days" /> >>>>>>>>> <select name="order"> >>>>>>>>> <option value="date_descend" <%= params[:order] == 'date_dscend' ? >>>>>>>>> 'selected' : ''%>> >>>>>>>>> Date: Latest to earliest >>>>>>>>> </option> >>>>>>>>> <option value="date_ascend" <%= params[:order] == 'date_ascend' ? >>>>>>>>> 'selected' : ''%>> >>>>>>>>> Date: Earliest to latest >>>>>>>>> </option> >>>>>>>>> <option value="rating_descend" <%= params[:order] == >>>>>>>>> 'rating_descend' ? 'selected' : ''%>> >>>>>>>>> Rating: Highest to lowest >>>>>>>>> </option> >>>>>>>>> <option value="rating_ascend" <%= params[:order] == >>>>>>>>> 'rating_ascend' ? 'selected' : ''%>> >>>>>>>>> Rating: Lowest to highest >>>>>>>>> </option> >>>>>>>>> </select> >> >>>>>>>>> Thanks. >> >>>>>>>>> -- >>>>>>>>> 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 >> >> ... >> >> read more ยป > > -- > 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. > -- 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.
