使用FULLTEXT索引美化URL

时间:2011-06-05 10:50:55

标签: mysql seo

我目前正在构建一个包含多个网页的网站,为了美化网站的网址,我使用http://mydomain.com/category/item-name

等地址

我正在使用MySQL表,所以为了从我的MySQL中获取当前项目,我有两个选择:

1)将项目的ID添加到标题:http://mydomain.com/category/28745/item-name(其中28745是表中的ID)。这样我就可以运行查询SELECT * FROM products WHERE ID=28745。简单的方法,但问题是URL有点丑陋。

2)使用文本搜索获取项目。在这种情况下,我会将项目名称用作FULLTEXT(使用MyISAM),因此查询将为SELECT * FROM products WHERE item-name=some-text

我试图找出第二种方法是否存在任何缺点。在FULLTEXT字段中使用INT代替索引会不会影响性能?如果URL由ID组成并且有点丑陋,搜索引擎真的很重要吗?

谢谢,

梅尔

4 个答案:

答案 0 :(得分:2)

你不需要FULLTEXT索引,这是第一件事。 FULLTEXT索引是用于搜索文本数据库的索引。你正在做的是完全匹配,你不是在搜索条目。

那就是说,将文本列上的索引放在整数1上有什么缺点?

首先是尺寸。整数需要较少的存储空间。他们的索引需要更少的存储空间为了存储整数,您需要4个字节(2 ^ 32是范围)。要存储单个ASCII字符,您需要1个字节。因此,一个包含4个以上字母的单词占用的空间将超过45亿个。

第二件事是,你不得不使用MyISAM,如果你想拥有某种原因全文索引。 有超过InnoDB的优势和MyISAM的缺点,这是这里良好的覆盖,在SO的话题。

在短期 - 除非你有100K +的类别和增长,除非你需要为你的类别高级搜索选项 - 不使用全文索引,使用普通的一个。 表引擎由您决定。 对于少量数据,它将毫无问题地工作。

答案 1 :(得分:0)

字符串搜索确实会影响性能,但拥有友好名称对搜索引擎也很重要,并且在共享时对用户更具描述性。在数据库中的item-name字段上使用index可以加快搜索速度。

答案 2 :(得分:0)

也许在您的地址中使用日期而不是ID更清洁?


修改

如果这只是产品,我认为将它们显示为第二种方法的文本更好,因为您可能在类别中有唯一的产品名称?如果不是这种情况,您可以在地址中添加ID:

http://mydomain.com/category/normal-item
http://mydomain.com/category/item-that-appears-multiple-times/1
http://mydomain.com/category/item-that-appears-multiple-times/2
http://mydomain.com/category/item-that-appears-multiple-times/3

答案 3 :(得分:0)

我建议将pagenumber放在一个单独的字段中 忘记使用全文索引。

让你的桌子像这样:

TableURL
   pageid integer autoincrement primary key
   url varchar(1000)
   pagetext text

现在您可以通过执行以下操作来检索网址:

$pageid = mysql_real_escape_string(.....);
....
SELECT pagetext from tableurl where pageid = '$pageid'

这将使您的搜索速度更快,加快插入速度并保持数据库设计的清洁,并防止检索重复的结果。