Php 标签搜索引擎
所以,我是PHP和数据库的新手,这里有一个问题: 我有一个名为Php 标签搜索引擎,php,sql,sqlite,Php,Sql,Sqlite,所以,我是PHP和数据库的新手,这里有一个问题: 我有一个名为news的表,其中一列是tags。此列包含一个或多个由空格分隔的标记,如economics-politics-sports。我有一个页面,它将接收一个或多个标记作为单个参数,我必须返回至少包含一个标记的所有行 我可以分解标记,并根据需要进行尽可能多的数据库访问,但我确信这不是实现它的方法=p LIKE和IN也不起作用,因为参数可能以任何顺序包含多个标记 有什么帮助吗?这不是如何构建的 有一个名为news的表,一个名为tags的表,还有
news
的表,其中一列是tags
。此列包含一个或多个由空格分隔的标记,如economics-politics-sports
。我有一个页面,它将接收一个或多个标记作为单个参数,我必须返回至少包含一个标记的所有行
我可以分解标记,并根据需要进行尽可能多的数据库访问,但我确信这不是实现它的方法=p
LIKE
和IN
也不起作用,因为参数可能以任何顺序包含多个标记
有什么帮助吗?这不是如何构建的 有一个名为news的表,一个名为tags的表,还有一个名为tagsToNews的表
在tagsToNews中,只需记录新闻条目ID和标记ID,然后进行连接即可获得所需内容。这也意味着标签可以在不破坏任何东西的情况下重命名 最简单的解决方案 将您的表转换为MyISAM表,并使用全文索引为
标记编制索引。然后,使用MATCH()
函数根据查询字符串(可能包含多个单词)提取行的匹配值
更具适应性的解决方案
删除该表并用每行一个标记重新创建它。您将通过这种方式有效地实现全文数组,因为它就是这样。如果您打算爆炸数据,请避免将数据存储在长字符串中-通常,存储原子部分的效率更高,因为您不必依赖饥饿型操作符。Hmm,这似乎是一个解决方案,谢谢=)。还有一个问题:我还有一个页面可以插入新闻。有没有办法在同一查询中插入它并将其映射到标记?更重要的是:如果标签不存在,那么创建标签?不是在一个查询中创建,但您可以始终使用插入触发器。大多数人在两个查询中(或多个查询中)创建标签,但使用触发器更可靠。感谢您的回复。我以前从来没有听说过触发器,所以我现在选择2个查询。怎么样?一个用来插入新的,另一个用来映射它?但是,如果新的查询可能有2个标记,那么如何只在一个查询中映射呢?如果它是一个新标签,我也必须插入标签怎么办?我有点迷路了,有参考资料吗?提前感谢=)。