PHP & Zend Searh Lucene & MySQL

工作到現在好像沒有真的學到什麼東西

真的要說有的話可能是工作的態度和做人處世的方法

大公司裡面要能夠往上爬的話靠技術是不夠的

技術人員很容易被取代,而且永遠都是技術人員

離題了

===========================

因為工作的關係,最近碰了很多 PHP 和 Javascript

先靠北一下 Zend Search Lucene

雖然她最近更新到 ZF 1.6 然後 Zend Search Lucene 也支援了 2.3 的 index 格式

實際上用起來實在效果還是不夠好

Lucene 有提供一個很好用的東西叫做 QueryWrapperFilter 拿來搜尋一個 subset 的 index

效果就類似用 subquery 先做一次 filter 再丟給 SELECT … FROM 來作搜尋

Zend Search Lucene 不支援這種動作

假設說我要在 1M 筆文件裡面找所有含有 A 也含有 B 的東西

含有 A 的有 30 筆,含有 B 的有 100K 筆

SQL 裡面可以可以先直接過濾出含有 A 的文件後再找裡面有沒有含有 B 的東西

Lucene 的 QueryWrapperFilter 也可以這樣子

但是 Zend Search Lucene 不行,很雞掰

所以一定得先找出所有含有 A 的

然後再找出所有含有 B 的

然後再快樂的 AND

效率比用 SQL 硬幹遜太多了

===========================

真的要再去碰的話大概會試 Solr 吧

不過目前的 SQL search 已經很可以接受了

除了沒有 prefix search 和一些沒人會用到的功能外

目前就先保持用 SQL 吧

Leave a Reply

All Rights Reserved Copyright © 2008 Design by StyleShout and Clazh