DEV: Некоторые планы в следующий релиз
Первое, что стоит изменить — поиск. Я не смог добиться «нормального» поиска используя индекс FULLTEXT для этого. Я так понимаю, что возможно этот вариант на случай «чтобы был» более-менее. Кстати, это не только проблема mysql, в Discourse
используя PostgreSQL
за эти 10 лет, поиск не очень у них. В разных местах, на разных платформах смотрел, где идет поиск по базе, не очень хорошо это дело работает.
Хотя, я возможно просто многого хочу. И стоп-слова используются и корни слов и…, не важно, это не то всё. Да. есть специализированные версии поиска на C++ и Java, но я не хочу тут «прыгать» на разные языки.
Поиск по умолчанию должен быть на php. И я не верю, что ничего нельзя сделать.
Начал искать, нашел хорошее описание, подумал, — оно!
https://github.com/VincentFoulon80/php-search
A Lucene-inspired PHP Search engine library
Библиотека поисковой системы PHP, вдохновленная Lucene.
Читаю, а вижу другое. Дело в том, что Lucene породила ряд подпроектов, например Hadoop и Nutch. А вот с Nutch очень хорошо знаком. И подумал, это и есть что-то близкое.
Нет. Это чуток другое, но меня заинтересовал подход. Собственно, а что теряем, ведь поиск в том виде, что сейчас не совсем устраивает. И если будет новый, он просто обязан быть лучше. Иначе, какой был смысл связываться?
Решил попробовать, сделал, тестирую. Есть некоторые наблюдения, но напишу про них позже.
Вот так это приблизительно выглядит.
Вот почему, когда получаются графики, происходит такой ужас? :)
Автор сам пишет, мол вы не пугайтесь, потихоньку идите по цепочкам и всё будет ясно.
Не, серьзно, с этими графиками что-то не то. :) Читаешь про «плотность лайков» статью, где графики есть, — ужас. Читаешь про фасеты, кошмар. И тут. Чуть со стула не упал, а на деле, всё куда проще.
В общем, давайте поменяем поиск. Он будет индексировать базу и искать по своей. Будут механизмы управления этим. Поиск будет рассчитывать «вес», расстояние между словами и т.д.
Тестирую на 200.000 записях в 2 независимых схемах. Пока, мне нравится результат. Скорость для PHP приличная и релевантность.
И когда начал делать этот поиск, обратил внимание на локализацию. Её надо изменить.
sprintf(Translate::get('main.title'), 'LibArea');
'main.title' => '%1$s — все посты',
Хоть так:
Translate::get('main.title'', ['name' => 'LibArea']);
'main.title' => '{name} — все посты',
Альтернативный вариант:
__('main.title'', ['name' => 'LibArea']);
// пример
__('key', ['a' => $a, 'b' => $b, 'c' => $c]);
И добавить более гибкую работу с модулями, плюс автоопределение и т.д.
Вот это надо будет сделать в новом релизе.
А мне нравятся такие графики, их в статьи включать хорошо, статьи сразу прилично выглядят. :)
Путаю все, запутать хотят. Ишь ты, нарисовали… ))