vorst.ru - Как организовать статьи в связанный список
Статьи из рубрики data-structure

Как создать индекс ElasticSearch

Полнотекстовый поиск

Один парень написал: "Нужно сделать поиск слов в таблице "articles" по столбцу "content". В результатах поиска сначала выводить те, которые содержат наибольшее количество слов в статье и далее по мере уменьшения."

Мысль летит) Но ясно, что нужен полнотекстовый поиск.


WordPress плагин для недвижимости

Без изменения структуры данных

Привлекательность WordPress в большом количестве тем оформления. Иллюзия легкости, с которой можно поменять тему, не дает покоя разработчикам. Сейчас на WordPress работают даже магазины.

Чтобы разобраться, как это возможно, я решил написать плагин для агенств недвижимости. Расширять структуру данных не хотелось - это уже будет не WordPress. Решил сохранять JSON-определения объектов недвижимости в поле post_content и преобразовывать эти определения "на лету" - Demo, GitHub


Как устроена структура данных Nested Set

Как сделать рубрикатор

Рубрикатор, как средство поиска интересных статей, имеет свои недостатки - трудно придумать иерархию, названия рубрик, трудно потом решить к какой конкретно рубрике относится статья. "Но, так принято" - скажите вы и будете правы.


Цепочки статей в блоге

Можно ли сделать блог удобнее?

Для группировки статей существует возможность помечать статьи метками или прикреплять к наперед заданной рубрике. Кроме того, в конце статьи есть навигация - предыдущая, следующая статья, ну и меню конечно. Вроде все удобно.



Поиск



Цепочки статей в блоге

Можно ли сделать блог удобнее?

Для группировки статей существует возможность помечать статьи метками или прикреплять к наперед заданной рубрике. Кроме того, в конце статьи есть навигация - предыдущая, следующая статья, ну и меню конечно. Вроде все удобно.


    Поделиться

Но, в одну рубрику могут входить статьи, посвященные разным темам. Да и с метками та-же неопределенность.

Вы выбираете конкретную рубрику или метку и получаете список статей вроде связанных между собой, но степень связанности разная. В результате читатель выбирая рубрику получает список статей не отвечающих ожиданиям.

Навигация - предыдущая, следующая то же огорчает. Выполнена она по датам. То есть, чтобы получить нужную последовательность статей, надо не забывать проставлять верные даты. Не очень удобно.

Можно ли улучшить положение?

Новое поле для улучшения навигации

Для связывания статей в цепочку можно добавить в стандартную таблицу post поле previous_id. Это обычный идентификатор статьи.

При добавлении в блог очередной статьи, нужно выбрать из выпадающего списка предыдущую статью. И это, собственно, все, что необходимо сделать блоггеру.

Model

Для поиска предыдущих статей нужно в модели последовательно "пройтись" по всем статьям начиная с просматриваемой, пока previous_id имеет заполненное значение.

public function Previous()
{
    $a = [];
    $previous = $this->previous_id;
    while($previous)
    {
        $post = $this->findOne($previous);
        $a[$post->id] = $post->getTitle();
        $previous = $post->previous_id;
    }
    return $a;
}

Для поиска следующих статей нужно "пройтись" по всем статьям у которых previous_id равно post.id статьи начиная с текущей.

Если массив $a окажется пустым, можно использовать обычный механизм - возвращать заголовок предыдущей или следующей статьи по дате.

Заключение

Добавление поля previous_id позволяет организовать статьи в группы или цепочки. Выбрав и просмотрев статью, Вы уже точно знаете, какие еще статьи относятся к теме.

Comments

  • I do trust all of the ideas you have introduced for your post. They're really convincing and can definitely work. Still, the posts are too quick for novices. May you please prolong them a bit from subsequent time? Thanks for the post. Lettie
  • -- I will try. Thanks a lot for the comment. SergeyMorozov

Оставьте комментарий

Только зарегистрированные пользователи могут оставлять комментарии. Пожалуйста войдите или пройдите регистрацию.