我100thousand在mysql表中有行,其中each row has about 8 fields.
100thousand
each row has about 8 fields.
我终于掌握了如何使用Zend Lucenemysql表中的索引和搜索数据。
Zend Lucene
在对网站完全实现此功能之前,我有一些问题:
1-是否可以预先确定索引的大小?这是因为在Zend手册中说索引的最大大小为2GB。我立刻想到这还不够我的桌子!
2-我读过一些帖子,他们说Zend Lucene在大型索引上的搜索非常慢,最多几分钟!直接使用mysql命令(SELECT,LIKE等)代替zend更快吗?
3-我是否还有其他解决方案,那就是为分类广告创建一个搜索引擎,该搜索引擎至少具有这些功能,并且不需要全文mysql索引(字段)。
谢谢
SOLR基本上是一个Apache Tomcat容器,该容器实现了REST接口以查询Apache Lucene索引。是的,您需要能够在Web服务器上运行Java应用程序。这是您与托管服务提供商一起解决的一个问题。
使用您的Web应用程序的客户端不需要运行Java。您的PHP应用程序可以对SOLR服务进行REST查询,并以HTML格式格式化结果。客户端只能看到HTML输出。它永远不需要知道数据来自用Java实现的服务。
Zend_Search_Lucene是一个纯PHP实现,应该可以与Apache Lucene相同地工作。Zend解决方案甚至使用相同的索引文件格式。因此,在存储方面,它们应该相等。
Zend_Search_Lucene
我使用Java Lucene索引了数据转储(2009年10月)。我索引了150万行,包括大约1个文本数据。Lucene索引为1323 MB,而相同数据的MySQL FULLTEXT索引仅为466 MB。
使用SQLLIKE谓词代替任何全文本索引解决方案当然不需要任何空间,因为它仍然无法利用常规索引。但是在我的测试中,使用LIKE它的速度比Java Lucene慢200倍,而Java Lucene的速度却比相同数据上的MySQL FULLTEXT索引慢40%。
LIKE
请参阅我最近关于MySQL全文索引解决方案的演讲:
http://www.slideshare.net/billkarwin/practical-full-text-search-with-my- sql
毫不奇怪,它无法与Java Lucene技术的性能和可伸缩性相提并论。PHP作为一种语言的优势在于提高了开发效率,而不是运行时效率。
更新: 我只是尝试使用创建索引Zend_Search_Lucene。用PHP创建索引比使用Java Lucene技术要慢得多,因此我只索引了10,000个文档。这花费了将近15分钟,这使索引整个馆藏花费了大约36个小时。与此相比,Java Lucene在我的测试中在不到7分钟的时间内索引了150万份文档的全部集合。
我创建的索引大小Zend_Search_Lucene为8.75 MB。推断这150倍,我估计完整索引将为1312.5 MB。因此,我得出的结论是,Zend_Search_Lucene创建的索引大小与Java Lucene生成的索引大小相同。这是预期的。