PHP граненый поиск - PullRequest
       10

PHP граненый поиск

2 голосов
/ 25 августа 2010

у меня есть таблица вопрос (mysql с php), которая содержит вопрос, категорию (несколько) и субкат (несколько) его принадлежность. Для упрощения при сохранении каждого вопроса я сохранил категорию в запятой, как показано ниже

qid    question      catid    subcat
2     question1        2,3,4   5,7

вот так у меня 1000 вопросов прямо сейчас в БД

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

 cat1(5)
   subcat1(3)
   .........
 cat2(24)
 ..........

Для этого я только что реализовал in_array при поиске определенного кота для каждого вопроса в для каждого цикла для этой таблицы вопросов. Теперь страница становится медленной. наряду с текстовым поиском также.

Это действительно хорошая идея или предложить мне правильный путь.

хочу ли я отдельный стол для категории?

Thanxs, Гоби

Ответы [ 2 ]

1 голос
/ 25 августа 2010

Да, правильный способ сделать это состоит в том, чтобы иметь отдельные таблицы для категории и подкатегории:

Table Category
--------------
qid   cat-id


Table Sub_category
------------------
qid   sub_cat_id

Таким образом, ваша таблица вопросов сокращается до:

Table Question
---------------
id    Question
0 голосов
/ 31 июля 2013

Правильный способ хранения информации об отношениях в отдельной таблице.Поэтому, возможно, вы найдете эту структуру полезной:

question таблица, содержащая информацию о вопросе:

CREATE TABLE `question` (`id` int, `question` text);

Таблица, содержащая информацию о категории:

CREATE TABLE `category` (`id` int, `parent_id` int, `category` tinytext);

таблица, содержащая отношения:

CREATE TABLE `question_category` (`question_id` int, `category_id` int);

С этой структурой вы легко получите большую глубину категорий и большое число отношений.

...