1、thinking-sphinx 3.0.4
2、ruby 1.9
3、sphinx 2.0.8
then config the delta index
1、class AddColumeToSnippets < ActiveRecord::Migration
def change
add_column :snippets, :delta , :boolean, :default => true, :null => false
add_column :users, :delta , :boolean, :default => true, :null => false
add_column :projects, :delta , :boolean, :default => true, :null => false
add_column :organizations, :delta , :boolean, :default => true, :null =>
false
end
end
2、class SnippetDeltas < ThinkingSphinx::Deltas::DefaultDelta
def toggle(instance)
super unless instance.description_changed?
end
def toggled?(instance)
return false unless instance.description_changed?
super
end
end
ThinkingSphinx::Index.define :snippet, :with => :active_record, :delta =>
SnippetDeltas do
indexes name, description
indexes public_flag, :sortable => true
indexes snippet_files.file_name, :as => :related_file_names
indexes snippet_files.content, :as => :related_file_content
indexes language.name, :as => :language_name
has created_at, star_count, fork_count, language_tag_id
end
3、rake ts:index , the output is:
indexing index 'snippet_core'...
collected 11 docs, 0.0 MB
sorted 0.0 Mhits, 100.0% done
total 11 docs, 187 bytes
total 0.005 sec, 36782 bytes/sec, 2163.65 docs/sec
indexing index 'snippet_delta'...
collected 0 docs, 0.0 MB
total 0 docs, 0 bytes
total 0.001 sec, 0 bytes/sec, 0.00 docs/sec
total 12 reads, 0.000 sec, 0.1 kb/call avg, 0.0 msec/call avg
total 42 writes, 0.000 sec, 0.1 kb/call avg, 0.0 msec/call avg
rotating indices: successfully sent SIGHUP to searchd (pid=21585).
and the development.sphinx.conf's config is:
source snippet_core_0
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass =
sql_db = gitlabhq_development
sql_query_pre = UPDATE `snippets` SET `delta` = 0 WHERE `delta` = 1
sql_query_pre = SET NAMES utf8
sql_query = SELECT SQL_NO_CACHE `snippets`.`id` * 8 + 3 AS `id`,
'Snippet' AS `sphinx_internal_class_name`, `snippets`.`name` AS `name`,
`snippets`.`description` AS `description`, `snippets`.`public_flag` AS
`public_flag`, GROUP_CONCAT(snippet_files.`file_name` SEPARATOR ' ') AS
`related_file_names`, GROUP_CONCAT(snippet_files.`content` SEPARATOR ' ')
AS `related_file_content`, sys_tags.`name` AS `language_name`,
`snippets`.`id` AS `sphinx_internal_id`, 'Snippet' AS
`sphinx_internal_class`, 0 AS `sphinx_deleted`,
UNIX_TIMESTAMP(`snippets`.`created_at`) AS `created_at`,
`snippets`.`star_count` AS `star_count`, `snippets`.`fork_count` AS
`fork_count`, `snippets`.`language_tag_id` AS `language_tag_id` FROM
`snippets` LEFT OUTER JOIN `snippet_files` ON `snippet_files`.`snippet_id`
= `snippets`.`id` LEFT OUTER JOIN `sys_tags` ON `sys_tags`.`id` =
`snippets`.`language_tag_id` WHERE (`snippets`.`delta` = 0 AND
`snippets`.`id` BETWEEN $start AND $end) GROUP BY `snippets`.`id`,
`snippets`.`name`, `snippets`.`description`, `snippets`.`public_flag`,
sys_tags.`name`, `snippets`.`id`, `snippets`.`created_at`,
`snippets`.`star_count`, `snippets`.`fork_count`,
`snippets`.`language_tag_id` ORDER BY NULL
sql_query_range = SELECT IFNULL(MIN(`snippets`.`id`), 1),
IFNULL(MAX(`snippets`.`id`), 1) FROM `snippets` WHERE (`snippets`.`delta`
= 0)
sql_attr_uint = sphinx_internal_id
sql_attr_uint = sphinx_deleted
sql_attr_uint = star_count
sql_attr_uint = fork_count
sql_attr_uint = language_tag_id
sql_attr_timestamp = created_at
sql_attr_string = sphinx_internal_class
sql_field_string = public_flag
sql_query_info = SELECT `snippets`.* FROM `snippets` WHERE
(`snippets`.`id` = ($id - 3) / 8)
}
index snippet_core
{
type = plain
path = /home/git/labhub/db/sphinx/development/snippet_core
docinfo = extern
charset_type = utf-8
source = snippet_core_0
}
source snippet_delta_0
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass =
sql_db = gitlabhq_development
sql_query_pre = SET NAMES utf8
sql_query = SELECT SQL_NO_CACHE `snippets`.`id` * 8 + 3 AS `id`,
'Snippet' AS `sphinx_internal_class_name`, `snippets`.`name` AS `name`,
`snippets`.`description` AS `description`, `snippets`.`public_flag` AS
`public_flag`, GROUP_CONCAT(snippet_files.`file_name` SEPARATOR ' ') AS
`related_file_names`, GROUP_CONCAT(snippet_files.`content` SEPARATOR ' ')
AS `related_file_content`, sys_tags.`name` AS `language_name`,
`snippets`.`id` AS `sphinx_internal_id`, 'Snippet' AS
`sphinx_internal_class`, 0 AS `sphinx_deleted`,
UNIX_TIMESTAMP(`snippets`.`created_at`) AS `created_at`,
`snippets`.`star_count` AS `star_count`, `snippets`.`fork_count` AS
`fork_count`, `snippets`.`language_tag_id` AS `language_tag_id` FROM
`snippets` LEFT OUTER JOIN `snippet_files` ON `snippet_files`.`snippet_id`
= `snippets`.`id` LEFT OUTER JOIN `sys_tags` ON `sys_tags`.`id` =
`snippets`.`language_tag_id` WHERE (`snippets`.`delta` = 1 AND
`snippets`.`id` BETWEEN $start AND $end) GROUP BY `snippets`.`id`,
`snippets`.`name`, `snippets`.`description`, `snippets`.`public_flag`,
sys_tags.`name`, `snippets`.`id`, `snippets`.`created_at`,
`snippets`.`star_count`, `snippets`.`fork_count`,
`snippets`.`language_tag_id` ORDER BY NULL
sql_query_range = SELECT IFNULL(MIN(`snippets`.`id`), 1),
IFNULL(MAX(`snippets`.`id`), 1) FROM `snippets` WHERE (`snippets`.`delta`
= 1)
sql_attr_uint = sphinx_internal_id
sql_attr_uint = sphinx_deleted
sql_attr_uint = star_count
sql_attr_uint = fork_count
sql_attr_uint = language_tag_id
sql_attr_timestamp = created_at
sql_attr_string = sphinx_internal_class
sql_field_string = public_flag
sql_query_info = SELECT `snippets`.* FROM `snippets` WHERE
(`snippets`.`id` = ($id - 3) / 8)
}
index snippet_delta
{
type = plain
path = /home/git/labhub/db/sphinx/development/snippet_delta
docinfo = extern
charset_type = utf-8
source = snippet_delta_0
}
4、when i insert a record into DB,and the delta colum's value is 1,but it
never changed until I mannually exec rake ts:index
Then next question is:when I update a record, Why the delta column don't
change to 1?
I want to know does it run automatically?
Thanks!
--
You received this message because you are subscribed to the Google Groups
"Thinking Sphinx" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/thinking-sphinx.
For more options, visit https://groups.google.com/groups/opt_out.