2012-05-30 4 views
0

Я использую теги для поиска страниц и имею по существу 3 структуру таблицы, теги, страницы и теги. Для системы меню сайта я хотел бы, чтобы небольшое количество ссылок отображалось в тегах, чтобы получить обоснованное представление об актуальности. Не искали результаты поиска на уровне Google, но что-то помимо простого поиска в одном термине, что исключало бы множество результатов. Например, для романтической ссылки я хотел бы подобрать теги, такие как любовь, отношения и т. Д. В дополнение к романтике. Так как теги настолько распространены, существует ли установленный механизм тегов, чтобы подтягивать результаты по тегам без точного соответствия? Я думаю о построении предложения where с несколькими поисковыми терминами в нем, но он начинает становиться немного громоздким. Есть ли лучший способ, чем ниже?Поисковая система MYSQL/PHP-тегов

Потенциальный подход:

$sql = "SELECT * FROM tagpages WHERE"; 
switch ($tag) 
{ 
case "romance": 
$where = "tag = 'relationship' || 
tag== 'love' || 
tag== 'breakup"; 
break; 
case "sports": 
$where = "tag = 'football' || 
tag== 'baseball' || 
tag== 'hockey"; 
break; 
case "politics": 
$where = "tag = 'election' || 
tag== 'presidential'"; 
break; 
default: 
$where = ""; 
} 
$sql .= $where; 
+0

Пожалуйста, выберите ответ, если какой-либо костюм – nickdbush

ответ

0

хорошо начать вы только соответствующий случай, когда тег = строку, вы заявляете с прецедентной структурой, чтобы исключить все другие тег.

Вы можете использовать знак "%" в соответствии с символами LIKE или совпадающими символами, а затем по модулю конец строки, означающий, что остальная часть строки выглядит как угодно, если эти символы перед знаком модуля совпадают. «CHAR%» будет возвращать символ, прелести

Вы можете исключить с помощью <> что означает NOT, но вам может потребоваться переключиться на структуру IF ... ELSE, если вы знаете все возможные совпадения, я думаю, вы можете просто объявить теги, а затем они будут пронумерованы 1 ... n, и вы можете совпадение с номером заполнителя ... не уверены в этом.

0

Для тех, кто находит этот вопрос, я пошел с тем, что, по-видимому, является лучшим подходом, используя Match Against в SQL-запросе. Для тегов или поисковых терминов, которые похожи на ссылку, то есть для отношений, романтики, любви и т. Д., Просто создайте строку ключевых слов, сколько угодно, как в $ keywords = «романтика, любовь, брак»; Вы можете добавить к нему, когда узнаете о новых условиях. Затем запустите sql-запрос $ sql = "SELECT * FROM pages Match (shdescript, longdescript) Против ('$ keywords')"; Для этого вам нужно создать полный текстовый индекс в MYSQL для полей, которые вы хотите искать, например, shortdescript longdescript. Самое приятное, что он действительно оценивает ваши результаты поиска по релевантности, поскольку некоторые двигатели MYSQL обладают довольно надежной способностью поисковой системы. Например, вы можете научить его взвешивать определенные вещи, используя математические проценты, как в Mysql fulltext search relevance across multiple tables, или просто пойти со значениями по умолчанию.

Смежные вопросы