parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

ConstC 15.01.2004 17:18

Спасибо за ответ:
1. Относительно "uri, который не факт...." имелось в виду поле uri в БД
2. Все же некоторые части остались вдали от понимания:
|-/ (Добро пожаловать) id=1 p_id=0
|-/texts/ (Тексты) id=2 p_id=0
 |-/texts/vasya_pupkin/ id=3 p_id=2
  |-/texts/vasya_pupkin/fiction/ id=4 p_id=3
В моем случае(реализации) сделано так: содержимое таблицы:
id	p_id	uri				title
=================================================================

1	0	/				Добро пожаловать
2	0	/texts/				Тексты
3	2	/texts/vasya_pupkin/            Тексты Васи
4	3	/texts/vasya_pupkin/fiction/	Тексты Васи Пупкина Фантастика
5	2	/texts/pupkin_vasya/fiction/	Тексты Пупкина Васи Фантастика
Далее, полученный от пользователя uri, я ищу в БД, далее, либо 404 в случае, если uri не найден, либо - id/p_id раздела для дальнейшей работы.


Вы (если я правильно понял предлагаете следующее):
id	p_id	uri		title
=================================================================

1	0	/		Добро пожаловать
2	0	texts/		Тексты
3	2	vasya_pupkin/   Тексты Васи Пупкина 
4	3	fiction/	Тексты Васи Пупкина Фантастика
5	2	vasya_pupkin/   Тексты Пупкина Васи
6	5	fiction/	Тексты Пупкина Васи Фантастика (!!sic!!)
Если я правильно понял из вашей статьи - существование uri у элементов с id=4 и id=6 - возможно. Т.к.
не нужно для каждого объекта хранить полный путь от корня сайта
? :)

По вашему алгоритму:
1. Пользовательский uri=/texts/vasya_pupkin/fiction/. Создаем список: ("/texts/","/texts/vasya_pupkin/","/texts/vasya_pupkin/fiction/").
2. SELECT ... FROM .... WHERE uri in ("/texts/","/texts/vasya_pupkin/","/texts/vasya_pupkin/fiction/")
В результате - получим пусто (если мне не изменяет память по части механизма работы IN). Вместо match/against.
Если даже допустить, что мы будем добавлять по / с каждой стороны - мы достанем - /texts/, а не требуемый раздел.

Как мне кажется ваш алгоритм подходит только в случае первой таблицы. Но в случае, с IN мне кажется, что не всегда будет корректно работать, т.к., согласитесь - мы можем иметь 2 раздела, один из которых подчинен другому, но имеющих АБСОЛЮТНО разные uri. В случае с деревом, построенным по uri часть подобных разделов будет пропущена, и имеет смысл строить по id/p_id.