twitter如何使用lucence改进搜索?

时间:2011-04-15 09:03:14

标签: mysql performance search twitter

最近,Twitter工程师发布了一个非常深刻的blog关于在他们的搜索架构中使用Lucence而不是mysql的问题。 所以,我很好奇为什么他们选择lucence以及为什么mysql不符合他们的要求?另一方面,DBMS数据库系统的性能(或可扩展性)瓶颈是什么?

感谢任何想法!

感谢Adv

万斯

2 个答案:

答案 0 :(得分:0)

MySql是一个RDMS,非常强大,快速。它确实支持全文搜索,但它不是很好而且效率很高。 Lucence,是一个全文搜索引擎。全文搜索引擎能够在文档,文本等中进行搜索。因此,他们能够有效地搜索大量推文。

MySql在查询列方面很好,在这些列中也有离散搜索值。像查询肯定会受到打击。

您可以在互联网上找到有关全文搜索的大量信息。

答案 1 :(得分:0)

将Lucene索引视为一些大型参考书背面的索引:对于书中出现的每个重要术语,它列出了它出现的所有页面。因此,如果要查找书中出现术语的所有位置,请转到索引并获取页面列表。

Lucene所做的是将文档分解为单个单词(该过程称为“标记化”),然后为其中的每个单词/标记写入该单词出现在该文档中。

将索引想象为哈希表(它不是真的一个,但它是相同的想法):键是单词/标记,对于每个键,有一个包含列表引用的文件(URI,文件名)包含那个词。它不存储文档本身 - 只是对它的引用。当您在Lucene上搜索时,您提供了一个关键字,并返回包含该索引中出现的关键字的文档列表。

MySQL和其他RDBMS针对存储和检索记录进行了优化 - 预定义,有序列的集合。在列上放置索引时,它会将列的整个内容作为单个单元进行查看。如果该列是一段文本,则不会将其分解为单词。