User Tools

Site Tools


ru:tcms_install

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
ru:tcms_install [2016/07/13 12:54] – [Sphinx Delta Config] adminru:tcms_install [2022/07/04 12:56] (current) – [Default Rewrites] admin
Line 1: Line 1:
-====== Thumb CMS ======+====== Trade CMS ======
  
 Thumb CMS - это следующий шаг в развитии SmartCJ. Thumb CMS - это следующий шаг в развитии SmartCJ.
Line 59: Line 59:
 RewriteRule ^([^/]{2})/(.*)$ $2?force_lng=$1&%{QUERY_STRING} [L] RewriteRule ^([^/]{2})/(.*)$ $2?force_lng=$1&%{QUERY_STRING} [L]
  
-RewriteRule ^category/([^/]+)/$ /script_folder_name/cgi/out.php?url=content&p=100&dont_count_in_trade=true&skip_sell=true&group_name=$1&order=ctr&%{QUERY_STRING} [L] + 
-RewriteRule ^category/([^/]+)/([^/]+)/([^/]+)/$ /script_folder_name/cgi/out.php?url=content&p=100&dont_count_in_trade=true&skip_sell=true&group_name=$1&order=$2&page=$3&%{QUERY_STRING} [L]+# add &dont_count_in_trade=true if you dont want to count these clicks 
 +RewriteRule ^category/([^/]+)/$ /script_folder_name/cgi/out.php?url=content&p=100&skip_sell=true&group_name=$1&order=ctr&%{QUERY_STRING} [L] 
 +RewriteRule ^category/([^/]+)/([^/]+)/([^/]+)/$ /script_folder_name/cgi/out.php?url=content&p=100&skip_sell=true&group_name=$1&order=$2&page=$3&%{QUERY_STRING} [L]
  
 #slug galleries #slug galleries
Line 67: Line 69:
  
 #tags #tags
-RewriteRule ^tag/([^/]+)/([^/]+)/([^/]+)/$ /script_folder_name/tube/index.php?tag=$1&page=$3&order=$2&%{QUERY_STRING} [L] +RewriteRule ^tag/([^/]+)/([^/]+)/([^/]+)/$ /?tag=$1&page=$3&order=$2&%{QUERY_STRING} [L] 
-RewriteRule ^tag/([^/]+)/([^/]+)/$ /script_folder_name/tube/index.php?tag=$1&page=$2&%{QUERY_STRING} [L] +RewriteRule ^tag/([^/]+)/([^/]+)/$ /?tag=$1&page=$2&%{QUERY_STRING} [L] 
-RewriteRule ^tag/([^/]+)/$ /script_folder_name/tube/index.php?tag=$1&%{QUERY_STRING} [L]+RewriteRule ^tag/([^/]+)/$ /?tag=$1&%{QUERY_STRING} [L]
  
 #model galleries #model galleries
-RewriteRule ^model_galleries/([^/]+)/$ /script_folder_name/tube/?model_slug=$1&force_template=model_galleries [L] +RewriteRule ^model_galleries/([^/]+)/$ /?model_slug=$1&force_template=model_galleries [L] 
-RewriteRule ^model_galleries/([^/]+)/([^/]+)/$ /script_folder_name/tube/?model_slug=$1&page=$2&force_template=model_galleries [L]+RewriteRule ^model_galleries/([^/]+)/([^/]+)/$ /?model_slug=$1&page=$2&force_template=model_galleries [L]
  
-RewriteRule ^model/([^/]+)/$ /script_folder_name/tube/?model_slug=$1&force_template=model_galleries&%{QUERY_STRING} [L] +RewriteRule ^model/([^/]+)/$ /?model_slug=$1&force_template=model_galleries&%{QUERY_STRING} [L] 
-RewriteRule ^model/([^/]+)/([^/]+)/([^/]+)/$ /script_folder_name/tube/?model_slug=$1&force_template=model_galleries&order=$2&page=$3&%{QUERY_STRING} [L]+RewriteRule ^model/([^/]+)/([^/]+)/([^/]+)/$ /?model_slug=$1&force_template=model_galleries&order=$2&page=$3&%{QUERY_STRING} [L]
  
-RewriteRule ^search/([^/]+)/([^/]+)/$ /script_folder_name/tube/index.php?search=$1&page=$2&%{QUERY_STRING} +RewriteRule ^search/([^/]+)/([^/]+)/$ /?search=$1&page=$2&%{QUERY_STRING} 
-RewriteRule ^search/([^/]+)/([^/]+)/([^/]+)/$ /script_folder_name/tube/index.php?search=$1&order=$2&page=$3&%{QUERY_STRING}+RewriteRule ^search/([^/]+)/([^/]+)/([^/]+)/$ /?search=$1&order=$2&page=$3&%{QUERY_STRING}
  
 </code>  </code> 
Line 119: Line 121:
  
  location /tag {   location /tag { 
- rewrite ^/tag/([^/]+)/([^/]+)/([^/]+)/$ /script_folder_name/tube/index.php?tag=$1&page=$3&order=$2&$query_string ;  + rewrite ^/tag/([^/]+)/([^/]+)/([^/]+)/$ /?tag=$1&page=$3&order=$2&$query_string ;  
- rewrite ^/tag/([^/]+)/([^/]+)/$ /script_folder_name/tube/index.php?tag=$1&page=$2&$query_string ;  + rewrite ^/tag/([^/]+)/([^/]+)/$ /?tag=$1&page=$2&$query_string ;  
- rewrite ^/tag/([^/]+)/$ /script_folder_name/tube/index.php?tag=$1&$query_string ; + rewrite ^/tag/([^/]+)/$ /?tag=$1&$query_string ; 
  }  }
  
  
  location /model_galleries {   location /model_galleries { 
- rewrite ^/model_galleries/([^/]+)/$ /script_folder_name/tube/?model_slug=$1&force_template=model_galleries ;  + rewrite ^/model_galleries/([^/]+)/$ /?model_slug=$1&force_template=model_galleries ;  
- rewrite ^/model_galleries/([^/]+)/([^/]+)/$ /script_folder_name/tube/?model_slug=$1&page=$2&force_template=model_galleries ; + rewrite ^/model_galleries/([^/]+)/([^/]+)/$ /?model_slug=$1&page=$2&force_template=model_galleries ; 
  }   } 
   
  location /model {   location /model { 
- rewrite ^/model/([^/]+)/$ /script_folder_name/tube/?model_slug=$1&force_template=model_galleries&$query_string ;  + rewrite ^/model/([^/]+)/$ /?model_slug=$1&force_template=model_galleries&$query_string ;  
- rewrite ^/model/([^/]+)/([^/]+)/([^/]+)/$ /script_folder_name/tube/?model_slug=$1&force_template=model_galleries&order=$2&page=$3&$query_string ; + rewrite ^/model/([^/]+)/([^/]+)/([^/]+)/$ /?model_slug=$1&force_template=model_galleries&order=$2&page=$3&$query_string ; 
  }   } 
   
  location /search {   location /search { 
- rewrite ^/search/([^/]+)/([^/]+)/$ /script_folder_name/tube/index.php?search=$1&page=$2&$query_string;  + rewrite ^/search/([^/]+)/([^/]+)/$ /?search=$1&page=$2&$query_string;  
- rewrite ^/search/([^/]+)/([^/]+)/([^/]+)/$ /script_folder_name/tube/index.php?search=$1&order=$2&page=$3&$query_string; + rewrite ^/search/([^/]+)/([^/]+)/([^/]+)/$ /?search=$1&order=$2&page=$3&$query_string; 
  }  }
  
  
 </code>  </code> 
 +
 +
 +===== Search =====
 +
 +По дефолту для поиска используется конструкция примерно WHERE description LIKE '%search_term%'. В настройках ротации есть пункт 
 +
 +Search fields
 +If you don't use Sphinx the script will use Mysql
 +built-in functionality. It's slower so we limit amount of fields
 +Please, read the last WIKI about the last option. 
 +
 +
 +По дефолту скрипт ищет по в description, в этом пункте можно настроить поиск в Title (Alt), либо по обоим полям сразу, что конечно создает несколько больше нагрузки.
 +
 +Лучший вариант - это настройка Sphinx о чем рассказано ниже.
 +
 +Но есть компромисный вариант: FullText Search для Mysql (последний из пунктов опции Search fields). Его смысл в том, что Mysql так же умеет искать учитывая морфологию, однако до версии 5.6 он это делал только для таблиц MyISAM.
 +
 +Итого если вы хотите использовать этот вариант, который несоклько проще варианта Sphinx в настройке надо для таблиц rot_gallery_data* добавить индекс 
 +
 +<code>
 +        ALTER TABLE `rot_gallery_data1` ADD FULLTEXT (
 + `alt` ,
 + `description`
 + )
 +</code>
 +
 +И переключить в настройках опцию на поиск FullText.
 +
  
  
Line 178: Line 209:
  LEFT JOIN rot_tags as t on t.tag_id = g2t.tag_id \  LEFT JOIN rot_tags as t on t.tag_id = g2t.tag_id \
  WHERE g2t.gallery_id = gi.gallery_id) as tags, \  WHERE g2t.gallery_id = gi.gallery_id) as tags, \
 + (SELECT group_concat(tag_id) FROM rot_gal2tag g2t \
 + WHERE g2t.gallery_id = gi.gallery_id) as tag_ids, \
 + (SELECT group_concat(name) FROM rot_groups  \
 + WHERE rot_groups.id in (SELECT group_id FROM rot_gallery_stats1 WHERE rot_gallery_stats1.gallery_id = gi.gallery_id AND group_id != 0) ) as group_names, \
 +                                                                  \
 + (SELECT group_concat(name) FROM rot_groups  \
 + WHERE rot_groups.id in (SELECT group_id FROM rot_gallery_stats1 WHERE rot_gallery_stats1.gallery_id = gi.gallery_id AND group_id != 0) ) as group_names, \
 +
  (SELECT group_concat(gss.group_id) FROM rot_gallery_stats1 as gss \  (SELECT group_concat(gss.group_id) FROM rot_gallery_stats1 as gss \
  WHERE gss.gallery_id = gi.gallery_id AND group_id != 0) as categories \  WHERE gss.gallery_id = gi.gallery_id AND group_id != 0) as categories \
Line 184: Line 223:
  JOIN rot_gallery_stats1 AS gs ON gs.gallery_id = gi.gallery_id \  JOIN rot_gallery_stats1 AS gs ON gs.gallery_id = gi.gallery_id \
  WHERE gallery_status = 'active' and gallery_type = 0 \  WHERE gallery_status = 'active' and gallery_type = 0 \
- and gs.best_thumb = 'yes' and gs.group_id = 0+ and gs.best_thumb = 'yes' and gs.group_id = 0 AND gs.group_id NOT IN (SELECT group_id FROM rot_groups_data WHERE status != 1)
  
  
Line 193: Line 232:
  sql_attr_uint     = content_type  sql_attr_uint     = content_type
     sql_attr_multi = uint categories from field;      sql_attr_multi = uint categories from field; 
 +    sql_attr_multi = uint tag_ids from field; 
  
 } }
Line 208: Line 248:
  
 </code> </code>
 +
 +
 +
  
  
Line 214: Line 257:
 При создании индекса sphinx делает индекс текущего состояния базы и если после индексирования в базе были какие-либо изменения, то  sphinx не найдет новых данных, тк они были добавлены после индексирования. При создании индекса sphinx делает индекс текущего состояния базы и если после индексирования в базе были какие-либо изменения, то  sphinx не найдет новых данных, тк они были добавлены после индексирования.
  
-Логический вывод из этого: надо проводить реиндексацию после каждого изменения в базе, однако проблема в том, что  если база достаточно большая то индексация может занимать длительное время. И индексация это очень затратный по ресурсам процесс.+Логический вывод из этого: надо проводить реиндексацию после каждого изменения в базе, однако проблема в том, что  если база достаточно большая то индексация может занимать длительное время. И индексация это затратный по ресурсам процесс.
  
 Что бы решить эту проблему придумали delta index – это индекс в который попадут измения, которые произошли с момента полной индексации и до момента создания дельта индекса. При этом, поскольку индексируется малое кол-во данных, операция проходит очень быстро. Что бы решить эту проблему придумали delta index – это индекс в который попадут измения, которые произошли с момента полной индексации и до момента создания дельта индекса. При этом, поскольку индексируется малое кол-во данных, операция проходит очень быстро.
Line 240: Line 283:
     sql_query_pre = SET NAMES utf8     sql_query_pre = SET NAMES utf8
  
- sql_query = SELECT gi.gallery_id, UNIX_TIMESTAMP(gi.activation_date) as date, alt, description, gi.duration, sponsor_id, gs.total_ctr, gi.content_type, \ + sql_query = SELECT gi.gallery_id, UNIX_TIMESTAMP(gi.activation_date) as date, \ 
- (SELECT group_concat(tag_name) FROM rot_gal2tag g2t \ +                                                                                 \ 
- LEFT JOIN rot_tags as t on t.tag_id = g2t.tag_id \ + gd.alt, gd.description, gi.duration, gi.sponsor_id, gs.total_ctr, gi.content_type, rot_sponsors.sponsor_name, rot_sponsors.sponsor_site,\ 
- WHERE g2t.gallery_id = gi.gallery_id) as tags, \ +                          \ 
- (SELECT group_concat(gss.group_id) FROM rot_gallery_stats1 as gss \ +                                                                                 \ 
- WHERE gss.gallery_id = gi.gallery_id AND group_id != 0) as categories \ + (SELECT group_concat(tag_id) FROM rot_gal2tag g2t                               \ 
- FROM rot_gallery_info AS gi \ + WHERE g2t.gallery_id = gi.gallery_id) as tag_ids,                               \ 
- JOIN rot_gallery_data1 AS gd ON gi.gallery_id = gd.gallery_id \ +                                                                                 \ 
- JOIN rot_gallery_stats1 AS gs ON gs.gallery_id = gi.gallery_id \ + # TAGS START you can remove this part up to TAG END                             \ 
- WHERE gi.gallery_id > ( SELECT value FROM rot_settings WHERE name = 'sphinx_max_gallery_id' ) \ + # this part indexes tags, if you remove it - tags wont be indexed               \ 
- AND gallery_status = 'active' and gallery_type = 0 \ + # ligther index = less memory usage and faster search                           \ 
- and gs.best_thumb = 'yes' and gs.group_id = 0+ (SELECT group_concat(tag_name) FROM rot_gal2tag g2t                             \ 
 + LEFT JOIN rot_tags as t on t.tag_id = g2t.tag_id                                \ 
 + WHERE g2t.gallery_id = gi.gallery_id) as tags,                                  \ 
 +                                                                 \ 
 + # TAGS END                                                                      \ 
 +                                                                                 \ 
 +                                                                                 \ 
 + # GROUP START you can remove this part up to TAG END                            \ 
 + # this part indexes group names, if you remove it - it  wont be indexed         \ 
 + # ligther index = less memory usage and faster search                           \ 
 + (SELECT group_concat(name) FROM rot_groups                                      \ 
 + WHERE rot_groups.id in (SELECT group_id FROM rot_gallery_stats1                \ 
 + WHERE rot_gallery_stats1.gallery_id = gi.gallery_id AND group_id != 0)         \ 
 + ) as group_names,                                                              \ 
 +                                                                                 \ 
 +                                                               \ 
 + # GROUP END                                                                     \ 
 +                                                                                 \ 
 + # Models START you can remove this part up to MODEL END                         \ 
 + # this part indexes model names, if you remove it - it  wont be indexed         \ 
 + # ligther index = less memory usage and faster search                           \ 
 + (SELECT group_concat(model_name) FROM rot_models                                \ 
 + WHERE rot_models.model_id in (SELECT model_id FROM rot_gal2model               \ 
 + WHERE rot_gal2model.gallery_id = gi.gallery_id)                                \ 
 + ) as model_names,                                                              \ 
 +                                                                                 \ 
 + # MODEL END                                                                     \ 
 +                                                                                 \ 
 +                                                                                 \ 
 + (SELECT group_concat(distinct(gss.group_id)) FROM rot_gallery_stats1 as gss     \ 
 + WHERE gss.gallery_id = gi.gallery_id AND group_id != 0) as categories           \ 
 +                                                                                 \ 
 + FROM rot_gallery_info AS gi                                                     \ 
 + JOIN rot_sponsors on rot_sponsors.sponsor_id = gi.sponsor_id                    \ 
 + JOIN rot_gallery_data1 AS gd ON gi.gallery_id = gd.gallery_id                   \ 
 +                                                              \ 
 +                                                                                 \ 
 + JOIN rot_gallery_stats1 AS gs ON gs.gallery_id = gi.gallery_id                  \ 
 + WHERE gallery_status = 'active' and gallery_type = 0                            \ 
 + and gs.best_thumb = 'yes' and gs.group_id = 0                                   \ 
 + AND gs.group_id NOT IN (SELECT group_id FROM rot_groups_data WHERE status != 1) and gi.gallery_id > ( SELECT value FROM rot_settings WHERE name = 'sphinx_max_gallery_id' )
          
 } }
ru/tcms_install.1468414471.txt.gz · Last modified: (external edit)