User Tools

Site Tools


ru:installation

Differences

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

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
ru:installation [2018/12/06 10:14]
admin [Default Rewrites]
ru:installation [2019/10/30 08:49] (current)
admin
Line 133: Line 133:
  
  
-===== 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 239: Line 213:
  
  
- 
-===== Sphinx Delta Config ===== 
- 
-При создании индекса sphinx делает индекс текущего состояния базы и если после индексирования в базе были какие-либо изменения,​ то  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 = '​sphinx_max_gallery_id'​ 
- 
- 
-Теперь надо добавить создание дельта индекса 
- 
-<​code>​ 
- 
-source delta : your_name_source 
-{ 
-    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,​ \ 
- (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, \ 
- (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(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_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 gi.gallery_id > ( SELECT value FROM rot_settings WHERE name = '​sphinx_max_gallery_id'​ ) \ 
- AND gallery_status = '​active'​ and gallery_type = 0 \ 
- and gs.best_thumb = '​yes'​ and gs.group_id = 0 
-    ​ 
-} 
- 
- 
-index delta : your_name_index 
-{ 
-    source = delta 
-    path = /​your_full_path/​data/​delta 
-} 
- 
- 
-</​code>​ 
- 
- 
-Как можно заметить запрос такой же, отличается только наличием в выборке по sphinx_max_gallery_id. 
- 
-После этого надо доабвить в крон индексацию новых записей так часто, как вам нравится строкой ​ 
- 
-  indexer --rotate delta 
- 
-После создания индекса надо прописать delta в Sphinx Delta Index  настройках ротации. 
- 
-и раз в сутки например можно присоединять дельта индекс к основному 
- 
-  indexer --rotate --merge your_name_index delta 
- 
- 
-Все. 
  
  
ru/installation.1544091248.txt.gz · Last modified: 2018/12/06 10:14 by admin