"Быстрое внедрение sphinx на примере проекта...
TRANSCRIPT
![Page 1: "Быстрое внедрение Sphinx на примере проекта Фоксфорд.Учебник" Антон Ковалёв (Нетология-групп)](https://reader034.vdocuments.site/reader034/viewer/2022052606/587cdd281a28abff0b8b5fc1/html5/thumbnails/1.jpg)
Быстрое внедрение Sphinx на примере проектаФоксфорд.Учебник
КОВАЛЁВ АНТОН / РУКОВОДИТЕЛЬ ОТДЕЛА РАЗРАБОТКИ НЕТОЛОГИИ-ГРУПП
![Page 2: "Быстрое внедрение Sphinx на примере проекта Фоксфорд.Учебник" Антон Ковалёв (Нетология-групп)](https://reader034.vdocuments.site/reader034/viewer/2022052606/587cdd281a28abff0b8b5fc1/html5/thumbnails/2.jpg)
Фоксфорд.Учебник - foxford.ru/wiki
![Page 3: "Быстрое внедрение Sphinx на примере проекта Фоксфорд.Учебник" Антон Ковалёв (Нетология-групп)](https://reader034.vdocuments.site/reader034/viewer/2022052606/587cdd281a28abff0b8b5fc1/html5/thumbnails/3.jpg)
Фоксфорд.Учебник - foxford.ru/wiki
![Page 4: "Быстрое внедрение Sphinx на примере проекта Фоксфорд.Учебник" Антон Ковалёв (Нетология-групп)](https://reader034.vdocuments.site/reader034/viewer/2022052606/587cdd281a28abff0b8b5fc1/html5/thumbnails/4.jpg)
Статистика
Преподавателей и методистов
Опубликованных тем
Блоков теории КБ информации
226 1800 3750 20 000
![Page 5: "Быстрое внедрение Sphinx на примере проекта Фоксфорд.Учебник" Антон Ковалёв (Нетология-групп)](https://reader034.vdocuments.site/reader034/viewer/2022052606/587cdd281a28abff0b8b5fc1/html5/thumbnails/5.jpg)
КАКОЙ НУЖЕН ПОИСК?
С автокомплитом С контекстом поиска
Подстраивающийся под пользователя
![Page 6: "Быстрое внедрение Sphinx на примере проекта Фоксфорд.Учебник" Антон Ковалёв (Нетология-групп)](https://reader034.vdocuments.site/reader034/viewer/2022052606/587cdd281a28abff0b8b5fc1/html5/thumbnails/6.jpg)
СХЕМА ДАННЫХTheme
name
Blockcontent
Gradeindex
![Page 7: "Быстрое внедрение Sphinx на примере проекта Фоксфорд.Учебник" Антон Ковалёв (Нетология-групп)](https://reader034.vdocuments.site/reader034/viewer/2022052606/587cdd281a28abff0b8b5fc1/html5/thumbnails/7.jpg)
КАК СДЕЛАТЬ ПОИСК
• gem 'thinking-sphinx'
• Создать индекс
• Сделать запрос
• Получить коллекцию объектов
![Page 8: "Быстрое внедрение Sphinx на примере проекта Фоксфорд.Учебник" Антон Ковалёв (Нетология-групп)](https://reader034.vdocuments.site/reader034/viewer/2022052606/587cdd281a28abff0b8b5fc1/html5/thumbnails/8.jpg)
Простой поиск по темам
ThinkingSphinx::Index.define :theme, name: 'theme_full', with: :active_record do
indexes :name
indexes theme_blocks.block.content, as: :content
End
...
def self.full_text_search(query = '', options = {})
ThinkingSphinx::Search.new query, options
end
…
@themes = Theme.full_text_search(escaped_query, search_options)
![Page 9: "Быстрое внедрение Sphinx на примере проекта Фоксфорд.Учебник" Антон Ковалёв (Нетология-групп)](https://reader034.vdocuments.site/reader034/viewer/2022052606/587cdd281a28abff0b8b5fc1/html5/thumbnails/9.jpg)
УЛУЧШАЕМ КАЧЕСТВО
min_prefix_len: 2 expand_keywords: 1
index_exact_words: 1min_word_len: 3
#
#
#
#
charset_table#
expand_keywords: 1#
morphology: lemmatize_ru#
![Page 10: "Быстрое внедрение Sphinx на примере проекта Фоксфорд.Учебник" Антон Ковалёв (Нетология-групп)](https://reader034.vdocuments.site/reader034/viewer/2022052606/587cdd281a28abff0b8b5fc1/html5/thumbnails/10.jpg)
def search_options
{
indices: ['theme_full_core'],
select: "*, (IN(grade_ids, #{ grade_id }) OR NOT any_grade_ids) AS grade_match",
with: { grade_match: true },
}
end
…
join grades
has theme_grades.grade.id, as: :grade_ids
has "COUNT(DISTINCT theme_grades.id) > 0", as: :any_grade_ids, type: :boolean
Искать темы определенного класса
![Page 11: "Быстрое внедрение Sphinx на примере проекта Фоксфорд.Учебник" Антон Ковалёв (Нетология-групп)](https://reader034.vdocuments.site/reader034/viewer/2022052606/587cdd281a28abff0b8b5fc1/html5/thumbnails/11.jpg)
АВТОКОМПЛИТ
• Должен дополнять хорошие слова
• Не должен дополнять нехорошие слова
• Должен предлагать в первую очередь чаще
встречающиеся слова
![Page 12: "Быстрое внедрение Sphinx на примере проекта Фоксфорд.Учебник" Антон Ковалёв (Нетология-групп)](https://reader034.vdocuments.site/reader034/viewer/2022052606/587cdd281a28abff0b8b5fc1/html5/thumbnails/12.jpg)
Формирование частотного словаря
$ indexer myindex --buildstops keywords.txt 20000 --buildfreqs
…
имеет 550называется 544через 537права 523поэтому 520…
![Page 13: "Быстрое внедрение Sphinx на примере проекта Фоксфорд.Учебник" Антон Ковалёв (Нетология-групп)](https://reader034.vdocuments.site/reader034/viewer/2022052606/587cdd281a28abff0b8b5fc1/html5/thumbnails/13.jpg)
Поиск для автокомплита
ThinkingSphinx::Index.define :keyword, name: 'keyword', with: :active_record do
indexes :word, sortable: true
indexes :frequency, sortable: true
end
…
@themes = Theme.full_text_search(escaped_query, search_options)
convert_keywords_to_responses
![Page 14: "Быстрое внедрение Sphinx на примере проекта Фоксфорд.Учебник" Антон Ковалёв (Нетология-групп)](https://reader034.vdocuments.site/reader034/viewer/2022052606/587cdd281a28abff0b8b5fc1/html5/thumbnails/14.jpg)
Фоксфорд.Учебник - foxford.ru/wiki
![Page 15: "Быстрое внедрение Sphinx на примере проекта Фоксфорд.Учебник" Антон Ковалёв (Нетология-групп)](https://reader034.vdocuments.site/reader034/viewer/2022052606/587cdd281a28abff0b8b5fc1/html5/thumbnails/15.jpg)
Сниппеты
![Page 16: "Быстрое внедрение Sphinx на примере проекта Фоксфорд.Учебник" Антон Ковалёв (Нетология-групп)](https://reader034.vdocuments.site/reader034/viewer/2022052606/587cdd281a28abff0b8b5fc1/html5/thumbnails/16.jpg)
Контент статьи
"<div class=\"info_element\">\r\n<div class=\"info_header\"
>Определение</div>\r\n<div class=\"info_content\"
>\r\n<p><span><strong>Параллельным переносом на вектор $\\vec{a}$
</strong>называется движение, переводящее каждую точку $M$ в точку
$M_1$, такую что </span><span>$\\overrightarrow{MM_1} = \\vec{a}$.
</span></p>\r\n</div>\r\n</div>"
![Page 17: "Быстрое внедрение Sphinx на примере проекта Фоксфорд.Учебник" Антон Ковалёв (Нетология-групп)](https://reader034.vdocuments.site/reader034/viewer/2022052606/587cdd281a28abff0b8b5fc1/html5/thumbnails/17.jpg)
Как добавить сниппеты
@themes.context[:panes] << ThinkingSphinx::Panes::ExcerptsPane
…
excerpts: {
before_match: '<b>',
after_match: '</b>',
chunk_separator: ' … '
}
![Page 18: "Быстрое внедрение Sphinx на примере проекта Фоксфорд.Учебник" Антон Ковалёв (Нетология-групп)](https://reader034.vdocuments.site/reader034/viewer/2022052606/587cdd281a28abff0b8b5fc1/html5/thumbnails/18.jpg)
НАСТРОЙКИ СНИППЕТОВ
• before_match, after_match, around, phrase_boundary, weight_order, query_mode, force_all_words, limit_passages, limit_words, html_strip_mode, passage_boundary
![Page 19: "Быстрое внедрение Sphinx на примере проекта Фоксфорд.Учебник" Антон Ковалёв (Нетология-групп)](https://reader034.vdocuments.site/reader034/viewer/2022052606/587cdd281a28abff0b8b5fc1/html5/thumbnails/19.jpg)
Пример хорошего сниппета
Пример не очень хорошего сниппета
![Page 20: "Быстрое внедрение Sphinx на примере проекта Фоксфорд.Учебник" Антон Ковалёв (Нетология-групп)](https://reader034.vdocuments.site/reader034/viewer/2022052606/587cdd281a28abff0b8b5fc1/html5/thumbnails/20.jpg)
Фоксфорд.Учебник - foxford.ru/wiki
![Page 22: "Быстрое внедрение Sphinx на примере проекта Фоксфорд.Учебник" Антон Ковалёв (Нетология-групп)](https://reader034.vdocuments.site/reader034/viewer/2022052606/587cdd281a28abff0b8b5fc1/html5/thumbnails/22.jpg)
ПравкиДобавить цифры и статистикуУпростить инфу проУточнить сравнение с эластикомПереименовать улучшаем релевантностьДобавить слайд с выгрузкой слов для автокомплитаДобавить инфу про иДобавить шутокДобавить инфу про автокомплит по фразам