设置MySQL数据库以用于搜索功能

时间:2012-06-18 20:08:30

标签: php mysql

我目前有一个非常简单的MySQL数据库(articlesDB),其中包含1个表(文章)和6行,因此设置了:

 -------------------------------------------------------------------------------------
id (int) | articletitle | articleorganization | articledate | articleurl |  articletags
 -------------------------------------------------------------------------------------

数据库的目的是存储有关文章的信息以及存储已应用于这些文章的“标签”,以便通过表单通过任何查询组合搜索文章。

id自动递增,但文章标题,组织,日期,网址和标签都是从使用PHP构建的条目表单输入的。问题是需要有一种方法来强制执行正确的标签拼写应用于文章,所以我认为复选框将是要走的路。这样,只能应用正确(且一致)拼写的标签。

但是,我发现,为了以这种方式实现复选框,我实际上需要在数据库中有多个表;一个用于文章数据,一个用于标记,另一个用于交叉引用标记和文章数据:

//文章信息

 ----------------------------------------------------------------------
id | articletitle | articleorganization | articledate | articleurl
 ----------------------------------------------------------------------

//标记信息

 --------------
id  | articletag
 --------------

//文章和标签参考

 -------------------------------
id  |  articleid  |  articletagid
 -------------------------------

在此之后,我不确定如何继续构建MySQL查询的逻辑。

我想,我需要将数据插入3个单独的表中,但我不知道究竟需要去哪里。

非常感谢任何关于在哪里寻找的帮助或线索。

2 个答案:

答案 0 :(得分:1)

最简单的方法是让用户键入标签并发布表单。在表单处理文件中有一个SELECT查询搜索Tags表中的所有标签。如果它们不匹配则显示错误消息,否则在articles表中创建新条目,最后添加许多TagOnArticle(或任何你称之为的)条目。

以下是我如何模拟这种情况:

Database relations

现在,如果您想要检索所有有效标签,请使用:

SELECT tag_name FROM Tag

并将结果与​​用户输入的内容进行比较。

答案 1 :(得分:0)

看起来您想要设置字典数据库。我无法帮助那里。但是,你提到了逻辑...我假设你指的是提取最接近的匹配?

不幸的是,这项工作最好的事情是“模糊逻辑”(人工智能),这在我看来相当繁琐。最好的事情是Levenstein函数。