Symfony搜索标签

时间:2016-08-01 14:01:44

标签: php symfony elasticsearch lucene foselasticabundle

我们正在构建一个具有多个不同实体的应用程序,这些实体非常简单,并且具有名称和功能。描述和一些具体的东西。

现在我们要添加标签,以便添加额外的搜索关键字。 (某处还会有标签云,但这很容易)

我一直在阅读不同的方法来进行正确的搜索。解决方案如lucene,elastic,mysql全文匹配等等。

有没有人有经验可以分享这样的应用程序的最佳解决方案?

  1. 我应该将标签放在字符串/数组字段中的同一个表中吗?使用单独的表?我还发现DoctrineExtensions-Taggable看起来相当不错,也很容易制作一个tagcloud。
  2. 正确搜索名称,描述和标签,什么是最好的解决方案? Lucene的?弹性? myssql?到目前为止,我认为FOSElasticaBundle看起来最成熟,但不确定如何在那里添加标签搜索? (见1)
  3. 感谢您的建议!

1 个答案:

答案 0 :(得分:2)

“什么是最好的...”通常不是一个很好的方式来问这里,你会得到非常自以为是的答案或根本没有。

所以这是我的见解答案:

如果你有一个小集,你肯定可以运行MySQL和MATCH AGAINST(你需要教Doctrine如何使用它!)。这是最直接的事情,因为你已经有了Doctrine,只需要教一些东西。 所以,是的,Gedmo Taggable和你自己的Doctrine扩展,你有你的查询。

如果您的可搜索数据库变大,您将需要切换到适当的搜索引擎,如Elastic或Solr或其他任何内容。

您需要的内容通常称为“分面搜索”(或者在ElasticSearch中,现在称为“聚合”)。

有关您在Wikipedia上找到的多面搜索的更多信息。

是的,正确的搜索引擎更酷,更快,更华丽,但如果按计划进行首次处理,可能不是最好的解决方案。