2011-02-09 15 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中的计数。每次你需要知道计数是一个愚蠢的使用资源。