DEV: Некоторые планы в следующий релиз

Evg Evg 19 Апреля 2022

Первое, что стоит изменить — поиск. Я не смог добиться «нормального» поиска используя индекс 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]);

И добавить более гибкую работу с модулями, плюс автоопределение и т.д.

Вот это надо будет сделать в новом релизе.

9 Ответов

  1. German German 19 Апреля 2022

    А мне нравятся такие графики, их в статьи включать хорошо, статьи сразу прилично выглядят. :)

    1. Evg Evg 19 Апреля 2022

      Путаю все, запутать хотят. Ишь ты, нарисовали… ))

  1. OleStep OleStep 19 Апреля 2022 (ред.)

    Если поиск будет лучше, надо менять. Сайт же с текстами работает.

    1. Evg Evg 19 Апреля 2022

      Всегда задаю себе вопрос, это будет лучше, проще… да или нет? И если ответ — да, то надо делать, тут думать даже нечего. LibArea должен становиться лучше и лучше, каждый день.

  1. yuran yuran 19 Апреля 2022

    Графики красивые:) Может когда-нибудь кто хорошо разбирается напишет что там и как работает:) Я не халявщик… просто ленивый:)

  1. Evg Evg 20 Апреля 2022 (ред.)

    Пишу сюда. Поиск готов. Сегодня, завтра залью на GitHub, но пока лучше не ставить, надо многое отладить. Поискать можно с этой странице или пойти на главную: https://libarea.ru/search

    • 20,6 МБ (21 658 217 байт) — старая версия модуля
    • 324 КБ (332 156 байт) — новая

    Как-то так. И теперь своя поисковая система. Не думаю, что со старой даже сравнивать её можно.

    Скрипт Яндекса в блоке «поделиться» убран. Добавлен goodshare.js. css кнопок переписан (иконки добавлены).

    Теперь можно не спеша лишнее убирать. )

    А так, добавление этого модуля (поиск) показала, что архитектура нуждается в значительных изменениях.

    1. Yori Yori 20 Апреля 2022

      Сейчас посмотрим, но мне бы код глянуть. Что там, так понятней.

  1. Yori Yori 21 Апреля 2022

    По GitHub сегодня глянул. В последних коммитах, это можно поиск независимо настраивать, удалять, менять и добавлять документы? А если да, то документация будет?

    1. Evg Evg 21 Апреля 2022

      Да, интерфейс брал с Apache Solr, упрощенно конечно. А документацию, надо писать.