CWYAlpha

Just another WordPress.com site

Thought this was cool: 用MySQL全文索引给FeedDB打造一个搜索引擎

leave a comment »


效果图,欢迎测试 http://feed.readself.com/

 

samhjn  同学在上一篇文章评论中表示 Feed Database 的搜索功能不好使。原因是之前我没有太注重搜索上的优化,所以这个功能的体验很差。例如输入 “xiaoxia” 结果搜出一大堆 “xiaoxiao” 的网站,排名还比我的博客靠前,挺失望的!不过,今天的工作就是把这个功能给完善了!现在已经不是之前那个单纯在MySQL里使用like ‘%keyword%’查找那么简陋了。而且搜索速度也大大提升,不再像之前那样慢。

只要你输入关键字“xiaoxia”进行搜索,绝对不会出现“xiaoxiao”的结果了,因为这是两个不同的名字。

 

同时,你输入的关键词还会被拆分,例如“吸血鬼小说”会被拆分成“吸血鬼”和“小说”。排序方式为先按匹配词数,再按BR值(被友情链接数量)排序。

 

提到搜索引擎技术就离不开分词和索引,在分词上,我使用的是 mmseg 的中文分算法和搜狗的词库,分词速度快的惊人。以至于我处理数据的瓶颈在MySQL数据库上。我使用了MySQL的fulltext索引功能,在检索效率上可能没有sphinx那么快,但是对于10万个条目以内的数据库,速度已经足够了。为了达到精确查找的目的,我只对网站链接和标题两个属性进行了索引,fulltext的索引数据占用的空间也不多,才不到10M,挺环保的。

对网站标题进行分词之后,连同需要建立索引的链接,一起搬到了一个叫feed_index的索引表中。

下面是未分词的一段数据:

分词之后的数据:

目前这个分词效果还是挺满意的。另外,在最近看的一本搜索引擎相关的书籍中,提到了一种不依赖于词库的分词方法,能够应付一些新生的词汇,有空研究一下。如果两种方法都结合起来,应该能够达到更好的效果 :)

夜已深,明天继续研究!

# 来源:Xiaoxia[PG]


在微博上关注:
新浪,
腾讯
 
投稿

最新招聘

更多>>


from python.cn(jobs, news): http://simple-is-better.com/news/873

Written by cwyalpha

五月 19, 2012 在 9:08 上午

发表在 Uncategorized

发表评论

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / 更改 )

Twitter picture

You are commenting using your Twitter account. Log Out / 更改 )

Facebook photo

You are commenting using your Facebook account. Log Out / 更改 )

Google+ photo

You are commenting using your Google+ account. Log Out / 更改 )

Connecting to %s

%d 博主赞过: