如何在mysql数据库中保存和搜索内容(用wysiwyg html编辑器制作)?

时间:2015-07-09 03:34:47

标签: html mysql laravel-4 wysiwyg richtext

我想使用一个wysiwyg html编辑器(如this)并将其保存到我的mysql数据库中。 存储内容的最佳方式是什么(我想在文本类型字段中所有的html代码)?

这样您就可以搜索内容了。 (我爱:博客,塔林加,stackoberflow ....)

如果您将html代码存储在数据库中,那么如何进行查询以便它只搜索文本内容而不搜索html标签?

注意:我有一个Laravel 4项目。 (使用Eloquent的偏好)。

1 个答案:

答案 0 :(得分:0)

现在您正在进入搜索引擎类型的搜索。您可以进行数据库简单性或基于性能的搜索。这个答案将假设你有空间,你不会试图压缩尽可能多的空间。

DB Simplicity:

对于这种方法,您实际上只需将文本(已清理的)放入数据库中,并在将其取出后,您可以打印它而不需要卫生{{{$ txt}}}。至于搜索,您只需对整个列进行全文搜索,无论您正在搜索"%query%"。您需要查看一些原始查询,因为您可以对其进行一些优化。

性能:

进入后,您有两个版本的文本可以帮助打印和搜索。因为你不关心标签只是将所有这些都剥离了(一个粗糙的正则表达式只会删除尖括号之间的任何东西,并且括号本身会替换("< *>",& #34;&#34))

也可以删除标点符号,因为搜索可能会乱七八糟(你,你的)。清理文本以进行搜索优化后,您可以使用可打印列并在搜索列上进行搜索。当你进行全文搜索时,它仍然会很慢,但比处理标签要快。

另一种策略是将另一列作为唯一的单词列,这些通常可以称为标记。因此,在这种情况下,您还可以通过上一个搜索文本中的另一个过滤器提取数据,并删除对它们没有多大意义的所有常用词(或者,或者,它,是)。你现在可能有一篇文章的半相关单词列表可能有重复,将重复项与计数合并,并在另一列中从最大到最小排序。

根据您的目标,您现在拥有多种搜索粒度。你也可以通过模糊搜索来增强它,这会增加你的搜索时间,你可能不得不创建特定的索引表来帮助减少搜索时间。