Also, make sure you run `rake ts:rebuild` after making that change to your
index definition :)
--
Pat
On 12/11/2011, at 9:48 AM, Pat Allan wrote:
> Hi Joan
>
> City should be a field, not an attribute - so switch 'has city' to 'indexes
> city' and see if that helps matters.
>
> Cheers
>
> --
> Pat
>
> On 12/11/2011, at 2:15 AM, Joan Ruiz wrote:
>
>> Hi Pat, thanks for the quick reply
>>
>> I did read the wild cards example and created my config/sphinx.yml
>> with this data:
>>
>> development:
>> enable_star: 1
>> min_infix_length: 3
>>
>> But seems like the star is not working properly. I'm doing this search
>>
>> params = {:generic_text => "Michael", :city => "Dall"}
>> Client.search params[:generic_search], :conditions => {:city =>
>> "#{params[:city]}*"}
>>
>> but it is returning clients from many cities like Medellin, Dallas and
>> Madrid (Those are the cities I have on my DB at this moment).
>>
>> Also, I tried these searches on console and they didn't found the
>> client
>>
>> ruby-1.9.2-p290 :001 > Client.search "mich*"
>> Sphinx Query (1.8ms) mich*
>> Sphinx Found 0 results
>> => []
>> ruby-1.9.2-p290 :002 > Client.search "*mich*"
>> Sphinx Query (1.9ms) *mich*
>> Sphinx Found 0 results
>> => []
>>
>>
>> my indexes are
>>
>> define_index do
>> indexes :name
>> indexes registered_name
>> indexes contacts.name, :as => :contact
>> has city
>> has created_at
>> end
>>
>> I checked the file development.sphinx.config and looks like this
>>
>> source client_core_0
>> {
>> type = mysql
>> sql_host = localhost
>> sql_user = my_user
>> sql_pass = my_secret_password
>> sql_db = Proyect_development
>> sql_sock = /var/run/mysqld/mysqld.sock
>> sql_query_pre = SET NAMES utf8
>> sql_query_pre = SET TIME_ZONE = '+0:00'
>> sql_query = SELECT SQL_NO_CACHE `clients`.`id` * CAST(1 AS SIGNED) +
>> 0 AS `id` , `clients`.`name` AS `name`, `clients`.`registered_name` AS
>> `registered_name`, GROUP_CONCAT(DISTINCT IFNULL(`contacts`.`name`,
>> '0') SEPARATOR ' ') AS `contact`, `clients`.`id` AS
>> `sphinx_internal_id`, 0 AS `sphinx_deleted`, 3236430179 AS
>> `class_crc`, UNIX_TIMESTAMP(`clients`.`created_at`) AS `created_at`,
>> IFNULL(`clients`.`city`, '') AS `city` FROM `clients` LEFT OUTER JOIN
>> `contacts` ON `contacts`.`client_id` = `clients`.`id` WHERE
>> (`clients`.`id` >= $start AND `clients`.`id` <= $end) GROUP BY
>> `clients`.`id` ORDER BY NULL
>> sql_query_range = SELECT IFNULL(MIN(`id`), 1), IFNULL(MAX(`id`), 1)
>> FROM `clients`
>> sql_attr_uint = sphinx_internal_id
>> sql_attr_uint = sphinx_deleted
>> sql_attr_uint = class_crc
>> sql_attr_timestamp = created_at
>> sql_attr_str2ordinal = city
>> sql_query_info = SELECT * FROM `clients` WHERE `id` = (($id - 0) /
>> 1)
>> }
>>
>> index client_core
>> {
>> source = client_core_0
>> path = /home/curien/work/proyect/db/sphinx/development/client_core
>> charset_type = utf-8
>> enable_star = 1
>> }
>>
>> Do you have any idea what could be the problem?
>>
>> Thanks for your time and help
>>
>> Joan
>>
>> On Nov 11, 12:23 am, Pat Allan <[email protected]> wrote:
>>> Hi Joan
>>>
>>> You will want to use :with for the date range - and then you'll need
>>> wildcards for the city matching. You can find the relevant settings
>>> here:http://freelancing-god.github.com/ts/en/common_issues.html#wildcards
>>>
>>> And so your query will become:
>>>
>>> Client.search params[:generic_text],
>>> :conditions => {:city => "*#{params[:city]*"},
>>> :with => {:created_at => params[:start_date]..params[:end_date]}
>>>
>>> Although you'll want to make sure params[:start_date] and params[:end_date]
>>> are actually Time objects.
>>>
>>> Cheers
>>>
>>> --
>>> Pat
>>>
>>> On 11/11/2011, at 12:14 PM, Joan Ruiz wrote:
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>>> Hello
>>>
>>>> I have a search form with 4 text fields: generic text, city, start
>>>> date and end date. Generic text uses TS to search on name, registered
>>>> name and contact's name and I need a query like this:
>>>
>>>> Client.search("params[:generic_text]", :conditions => ["city like ?
>>>> and created_at > ? and created_at < ?", "%params[:city]%",
>>>> params[:start_date], params[:end_date]])
>>>
>>>> I have seen that I can use :with to search on the range of dates, but
>>>> I can't find something similar to "city like ?"
>>>> Am I missing something? Any help would be really appreciated
>>>
>>>> These are my indexes on the Client model
>>>
>>>> define_index do
>>>> indexes :name
>>>> indexes registered_name
>>>> indexes contacts.name, :as => :contact
>>>> has :country
>>>> has :created_at
>>>> end
>>>
>>>> pd: sorry for the bad English
>>>
>>>> --
>>>> 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
>>>> athttp://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.
>>
>
> --
> 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.