2011-02-09 52 views
1

我目前使用MySql,並有幾個表,我需要執行布爾搜索。鑑於我的表是Innodb類型,我發現一個更好的方法是使用Sphinx或Lucene。我在使用這些疑問,我查詢有以下幾種格式,MySql全文或獅身人面像或Lucene或其他?

Select count(*) as cnt, DATE_FORMAT(CONVERT_TZ(wrdTrk.createdOnGMTDate,'+00:00',:zone),'%Y-%m-%d') as dat from t_twitter_tracking wrdTrk where wrdTrk.word like (:word) and wrdTrk.createdOnGMTDate between :stDate and :endDate group by dat; 

查詢有哪些需要轉換到的時區一個日期字段登錄的用戶,然後應用的領域中做了通過...分組。

現在,如果我遷移到獅身人面像/ Lucene的將我能夠獲得類似於上面的查詢結果。我是獅身人面像的初學者,我應該使用哪一種,還是有更好的方法。

其實GROUPBY和搜索「wrdTrk.word喜歡(:字)」是我的查詢的一個重要組成部分,我需要移動到布爾搜索,以增強用戶體驗。我的數據庫大約有23652826行,db是基於Innodb的,MySql全文搜索不起作用。

問候 盧武鉉

回答

0

是。獅身人面像可以做到這一點。我不知道LIKE (:word)是做什麼的,但是你可以在sphinx搜索中做一個像@word "exactword"的查詢。

0

只有你需要正確索引的數據,並得到了結果

+0

你可以在這裏提供更多的信息。 – sesmic 2011-02-09 13:20:35

+0

當然,如果你想使用Lucene的,那麼你可以使用Zend Lucene和索引搜索數據第一,然後你可以瓶坯搜索 – Ankur 2011-02-09 13:23:45

0

既然你只需要數,我相信這將是你最好使用MySQL保持。 如果你有性能問題,我建議你使用explain()和更好的索引來改善你的查詢。 只有全文搜索是你的用例的主要部分,你應該轉向使用Sphinx/Solr。

閱讀Full Text Search Engine versus DBMS一個更全面的答案。

0

保存計數元表,隨時更新。或使用myisam,它保持自己的計數。 mongodb也保持自己的計數。緩存memcache中的計數。每次你需要知道計數是一個愚蠢的使用資源。