|
|
|
| Есть таблица связка статей с метками:
CREATE TABLE articles_labels(
id_article INT(11) NOT NULL COMMENT 'Ключ на объект',
label VARCHAR(255) NOT NULL COMMENT 'Метки к статьям'
)
ENGINE = MYISAM
COLLATE cp1251_general_ci
COMMENT = 'Метки к статьям и новостям';
|
Таким образом когда пользователь кликает по метке, в URL добавляется параметр:
Вопрос: В данном случае, кирилица в URL - это плохо? Или может быть ее надо кодировать, функцией urlencode()? Но тогда в URL будет что-то вроде: %D1%F2%F0%EE%EA%E0
Как поисковики к этому будут отноститься?
Или, еще есть идея добавить еще одно поле в таблицу, куда заносить имя метки в тринслите. И при клике на метку в УРЛ добавлять такую строку:
Как лучше сделать? | |
|
|
|
|
|
|
|
для: tAleks
(30.04.2011 в 11:19)
| | Лучше кодировать, пока не все браузеры корректно перекодируют кириллицу самостоятельно. Английские символы тоже не плохая идея, мы обычно так и поступаем. | |
|
|
|
|
|
|
|
для: cheops
(30.04.2011 в 11:55)
| | Добавил поле с транслитом. Теперь его надо проиндексировать, чтобы по нему делать выборку статей.
Возник ворпрос. На что влияет длинна индекса, и какую длинну в данном случае лучше указать для этого поля? И почему?
Спасибо. | |
|
|
|
|
|
|
|
для: tAleks
(30.04.2011 в 15:11)
| | Она влияет на количество символов, которые помещаются в индекс от начала строки, если это количество сделать небольшим, то в группы будет попадать огромное количество строк и их придется перебирать каждый раз при сравнении (т.е. чем строк меньше, тем быстрее происходит выборка из индекса). С другой строны чем больше индекс, тем больше файл индекса и тем выборка из него идет медленнее. Т.е. индекс должен быть не слишком большой и не слишком маленький, в вашем случае я думаю можно начать с 10 символов (если будет желание можете поварьировать его и посмотреть как будет изменяться динамика, только динамику нужно смотреть на "разогретом" сервере и заполненном буфере ключей). | |
|
|
|
|
|
|
|
для: cheops
(30.04.2011 в 17:33)
| | Т.е. если я правильно понял, если индекс слишком маленький, например 3 символа, то, если в БД пишется две записи, у которых в этом столбце первыве три символа одинаковые, то в индекс попадает только одна запись? или как? | |
|
|
|
|
|
|
|
для: tAleks
(02.05.2011 в 15:38)
| | Нет, в индекс попадают обе записи, но вместо прямого указания на запись, СУБД снова перебирает все записи таблицы. | |
|
|
|
|
|
|
|
для: cheops
(02.05.2011 в 15:56)
| | Вообще ВСЕ, или все те, у которых первые символы, попавшие в индекс, одинаковые? | |
|
|
|
|
|
|
|
для: tAleks
(02.05.2011 в 16:12)
| | У которых первые символы, попавшие в индекс, одинаковые. | |
|
|
|
|
|
|
|
для: cheops
(02.05.2011 в 16:24)
| | Т.е. длинна индекса должна быть минимально короткая, но такая, чтобы в индексе небыло одинаковых записей. Так? | |
|
|
|
|
|
|
|
для: tAleks
(02.05.2011 в 16:32)
| | Желательно, да. | |
|
|
|
|
|
|
|
для: cheops
(02.05.2011 в 16:34)
| | Спасибо! | |
|
|
|