Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MYSQL/PHP标签搜索引擎_Php_Mysql_Tags_Search Engine - Fatal编程技术网

MYSQL/PHP标签搜索引擎

MYSQL/PHP标签搜索引擎,php,mysql,tags,search-engine,Php,Mysql,Tags,Search Engine,我正在实现用于查找页面的标记,基本上有一个3表结构,即标记、页面和标记页面。对于该网站的菜单系统,我想有一些链接映射到标签,以便对相关性进行有根据的猜测。不寻找谷歌级别的搜索结果,但不仅仅是搜索一个词,这将排除许多结果。例如,对于浪漫链接,除了浪漫之外,我还想选择诸如爱情、关系等标签。由于标签非常常见,是否有一个已建立的标签引擎可以在没有精确匹配的情况下按标签提取结果?我正在考虑构造一个where子句,其中包含多个搜索词,但它开始变得有点笨拙。有比下面更好的方法吗 可能的方法: $sql = "

我正在实现用于查找页面的标记,基本上有一个3表结构,即标记、页面和标记页面。对于该网站的菜单系统,我想有一些链接映射到标签,以便对相关性进行有根据的猜测。不寻找谷歌级别的搜索结果,但不仅仅是搜索一个词,这将排除许多结果。例如,对于浪漫链接,除了浪漫之外,我还想选择诸如爱情、关系等标签。由于标签非常常见,是否有一个已建立的标签引擎可以在没有精确匹配的情况下按标签提取结果?我正在考虑构造一个where子句,其中包含多个搜索词,但它开始变得有点笨拙。有比下面更好的方法吗

可能的方法:

$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;

首先,当tag=string时,您只匹配case,您使用case结构声明以排除所有其他标记

您可以使用“%”模数符号来匹配相似字符或匹配字符,然后对字符串的结尾进行模数转换,这意味着字符串的其余部分看起来像什么,只要模数符号之前的这些字符匹配即可。“CHAR%”将返回字符,charms


您可以排除使用which means NOT,但您可能需要切换到IF…ELSE结构,如果您知道所有可能的匹配项,我认为您可以声明标记,然后它们将编号为1…n,您可以在占位符编号上进行匹配…在这一点上不确定。

对于发现此问题的任何人,我使用了一种似乎更好的方法,在SQL查询中使用Match-on。对于与链接类似的标签或搜索词,即关系、浪漫、爱情等,只需创建一个你想要多长的关键字字符串,如$keywords=“浪漫、爱情、婚姻”;您可以在学习新术语时添加到它。然后对(“$keywords”)运行sql查询$sql=“SELECT*FROM pages Match(shdescript,longdescript);为了实现这一点,您需要在MYSQL中为要根据ie shortdescript longdescript搜索的字段创建全文索引。好在它实际上是根据相关性对搜索结果进行排名,因为某些MYSQL引擎具有一些相当强大的搜索引擎功能。例如,您可以指示它使用中的数学百分比对某些内容进行加权,或者只使用默认值。

如果需要,请选择一个答案