ru:tcms_install
Differences
This shows you the differences between two versions of the page.
| Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
| ru:tcms_install [2016/04/28 09:50] – admin | ru:tcms_install [2022/07/04 12:56] (current) – [Default Rewrites] admin | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | ====== | + | ====== |
| Thumb CMS - это следующий шаг в развитии SmartCJ. | Thumb CMS - это следующий шаг в развитии SmartCJ. | ||
| Line 59: | Line 59: | ||
| RewriteRule ^([^/ | RewriteRule ^([^/ | ||
| - | RewriteRule ^category/ | + | |
| - | RewriteRule ^category/ | + | # add & |
| + | RewriteRule ^category/ | ||
| + | RewriteRule ^category/ | ||
| #slug galleries | #slug galleries | ||
| Line 67: | Line 69: | ||
| #tags | #tags | ||
| - | RewriteRule ^tag/ | + | RewriteRule ^tag/ |
| - | RewriteRule ^tag/ | + | RewriteRule ^tag/ |
| - | RewriteRule ^tag/ | + | RewriteRule ^tag/ |
| #model galleries | #model galleries | ||
| - | RewriteRule ^model_galleries/ | + | RewriteRule ^model_galleries/ |
| - | RewriteRule ^model_galleries/ | + | RewriteRule ^model_galleries/ |
| - | RewriteRule ^model/ | + | RewriteRule ^model/ |
| - | RewriteRule ^model/ | + | RewriteRule ^model/ |
| - | RewriteRule ^search/ | + | RewriteRule ^search/ |
| - | RewriteRule ^search/ | + | RewriteRule ^search/ |
| </ | </ | ||
| Line 119: | Line 121: | ||
| location /tag { | location /tag { | ||
| - | rewrite ^/ | + | rewrite ^/ |
| - | rewrite ^/ | + | rewrite ^/ |
| - | rewrite ^/ | + | rewrite ^/ |
| } | } | ||
| location / | location / | ||
| - | rewrite ^/ | + | rewrite ^/ |
| - | rewrite ^/ | + | rewrite ^/ |
| } | } | ||
| location /model { | location /model { | ||
| - | rewrite ^/ | + | rewrite ^/ |
| - | rewrite ^/ | + | rewrite ^/ |
| } | } | ||
| location /search { | location /search { | ||
| - | rewrite ^/ | + | rewrite ^/ |
| - | rewrite ^/ | + | rewrite ^/ |
| } | } | ||
| </ | </ | ||
| + | |||
| + | |||
| + | ===== Search ===== | ||
| + | |||
| + | По дефолту для поиска используется конструкция примерно WHERE description LIKE ' | ||
| + | |||
| + | 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, | ||
| + | |||
| + | Лучший вариант - это настройка Sphinx о чем рассказано ниже. | ||
| + | |||
| + | Но есть компромисный вариант: | ||
| + | |||
| + | Итого если вы хотите использовать этот вариант, | ||
| + | |||
| + | < | ||
| + | ALTER TABLE `rot_gallery_data1` ADD FULLTEXT ( | ||
| + | `alt` , | ||
| + | `description` | ||
| + | ) | ||
| + | </ | ||
| + | |||
| + | И переключить в настройках опцию на поиск FullText. | ||
| + | |||
| Line 158: | Line 189: | ||
| listen | listen | ||
| - | основное тут - доавление mysql41, новый вариант для сфинкс слушать по протоколу mysql | + | основное тут - добавление mysql41, новый вариант для сфинкс слушать по протоколу mysql |
| Далее пример для базы | Далее пример для базы | ||
| 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 = ' | WHERE gallery_status = ' | ||
| - | and gs.best_thumb = ' | + | and gs.best_thumb = ' |
| Line 193: | Line 232: | ||
| sql_attr_uint | sql_attr_uint | ||
| sql_attr_multi = uint categories from field; | sql_attr_multi = uint categories from field; | ||
| + | sql_attr_multi = uint tag_ids from field; | ||
| } | } | ||
| Line 209: | Line 249: | ||
| </ | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Sphinx Delta Config ===== | ||
| + | |||
| + | При создании индекса sphinx делает индекс текущего состояния базы и если после индексирования в базе были какие-либо изменения, | ||
| + | |||
| + | Логический вывод из этого: надо проводить реиндексацию после каждого изменения в базе, однако проблема в том, что | ||
| + | |||
| + | Что бы решить эту проблему придумали delta index – это индекс в который попадут измения, | ||
| + | |||
| + | При поиска sphinx будет искать и в основном индексе и в дельта индексе, | ||
| + | |||
| + | |||
| + | Итого : | ||
| + | |||
| + | в основную часть, которая у вас уже есть надо добавить после | ||
| + | |||
| + | sql_query_pre = SET NAMES utf8 | ||
| + | |||
| + | строку | ||
| + | |||
| + | sql_query_pre = UPDATE rot_settings SET value = (SELECT MAX(gallery_id) FROM rot_gallery_info) WHERE name = ' | ||
| + | |||
| + | |||
| + | Теперь надо добавить создание дельта индекса | ||
| + | |||
| + | < | ||
| + | |||
| + | source delta : your_name_source | ||
| + | { | ||
| + | sql_query_pre = SET NAMES utf8 | ||
| + | |||
| + | sql_query = SELECT gi.gallery_id, | ||
| + | \ | ||
| + | gd.alt, gd.description, | ||
| + | \ | ||
| + | \ | ||
| + | (SELECT group_concat(tag_id) FROM rot_gal2tag g2t \ | ||
| + | WHERE g2t.gallery_id = gi.gallery_id) as tag_ids, | ||
| + | \ | ||
| + | # TAGS START you can remove this part up to TAG END \ | ||
| + | # this part indexes tags, if you remove it - tags wont be indexed | ||
| + | # ligther index = less memory usage and faster search | ||
| + | (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 = ' | ||
| + | and gs.best_thumb = ' | ||
| + | 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 = ' | ||
| + | | ||
| + | } | ||
| + | |||
| + | |||
| + | index delta : your_name_index | ||
| + | { | ||
| + | source = delta | ||
| + | path = / | ||
| + | } | ||
| + | |||
| + | |||
| + | </ | ||
| + | |||
| + | |||
| + | Как можно заметить запрос такой же, отличается только наличием в выборке по sphinx_max_gallery_id. | ||
| + | |||
| + | После этого надо доабвить в крон индексацию новых записей так часто, как вам нравится строкой | ||
| + | |||
| + | indexer --rotate delta | ||
| + | |||
| + | После создания индекса надо прописать delta в Sphinx Delta Index настройках ротации. | ||
| + | |||
| + | и раз в сутки например можно присоединять дельта индекс к основному | ||
| + | |||
| + | indexer --rotate --merge your_name_index delta | ||
| + | |||
| + | |||
| + | Все. | ||
ru/tcms_install.1461837019.txt.gz · Last modified: (external edit)
