User Tools

Site Tools


Writing /home/user/smartcj.com/wiki/data/cache/5/5e535036771d5bdb55c48e4269aa842d.i failed
Unable to save cache file. Hint: disk full; file permissions; safe_mode setting.
Writing /home/user/smartcj.com/wiki/data/cache/5/5e535036771d5bdb55c48e4269aa842d.metadata failed
ru:new_rotation_sphinx

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:new_rotation_sphinx [2019/10/30 08:48] adminru:new_rotation_sphinx [2025/05/05 16:30] (current) – [Mysql Search] admin
Line 121: Line 121:
  
  
 +===== Search Log =====
  
 +Когда пользователь ищет что-то на сайте (domain.com/?search=...) то этот запрос пишется в базу, что б потом можно было вывести лог запросов. Через какое-то время запросов может быть много плюс иногда полезно организовать морфологический поиск среди них. Для чего эти запросы так же можно индексировать сфинксом. 
 +
 +Для этого добавляем в конфиг сфинкса 
 +
 +<code>
 +source search_queries 
 +{
 + type = mysql
 +
 + sql_host = YOUR_HOST
 + sql_user = USERNAME
 + sql_pass = PASSWORD
 + sql_db = DB_NAME
 + sql_port = 3306 # optional, default is 3306
 +
 +    sql_query_pre = SET NAMES utf8
 +
 + sql_query = SELECT sq_id, search_query, hits, items_found FROM rot_search_queries WHERE hits > 0  GROUP BY search_query
 +
 + sql_attr_uint     = hits
 + sql_attr_uint     = items_found
 +
 +}
 +
 +
 +index search_queries_index
 +{
 + source = search_queries
 + path = /WHERE_TO_STORE
 + docinfo = extern
 + morphology              = stem_en
 +}
 +
 +
 +</code>
 +
 +
 +и прописываем в сетингах Sphinx Search Log Index. Теперь этот индекс будет использован для выборки например похожих запросов для поиска, например у вас запрос domain.com/?search=..., вы выводите галеры по этому кейворду, а так же можно добавить список похожих поисков <thumb search_log=all filter=GET_search, вот для этой выборки и будет использован сфинкс, что будет быстрее и с использованием морфологии.
 +
 +
 +При этом так же нельзя забывать про реиндексацию. например, у нас был поиск "вася", дал 10 реузльтатов и лучшая галера там ИД 123. в базе ИД этой записи например 789 (ИД лучшщей галеры и ИД записи результатов поиска - это разные ИД). Сфинкс возвращает только ИД, в данном случае 789. И вот прошло какое-то время, поискали мы вася и оно вернуло уже другой результат, в базу его записало с ИД 888. А в реиндекса в сфинксе не было. И онвернул старый ид 789, которого уже нет. Или например который сейчас выдает какой-то другой результат, но в любом случае не актуальный.
 ===== Sphinx settings ===== ===== Sphinx settings =====
  
Line 166: Line 208:
  
 Но конечно лучше всего пройтись по документации sphinx и выбрать параметры для себя. Но конечно лучше всего пройтись по документации sphinx и выбрать параметры для себя.
 +
 +
 +===== Sphinx Reindex =====
 +
 +Об этом написано выше, но стоит повторить. Сфинкс - это не магия, он ищет по своему индексу. Свой индекс у него получается когда он проводит индксацию вашей базы. Если вы изменили базу (добавили галер, удалили и тп), а реиндексацию сфинкса не запустили - сфинкс про это не узнает.
 +
 +Это значит, что надо периодически проводоить реиндексацию. лучший вариант: смотреть когда у вас минимальная нагрузка и запускать индексацию в это время по крону.
 +===== Mysql 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.
 +
 +
 +
ru/new_rotation_sphinx.1572425335.txt.gz · Last modified: by admin