2016-08-01 114 views
-1

我們正在構建一個具有多個不同實體的應用程序,這些實體非常簡單,名稱爲&描述和一些特定的東西。Symfony搜索標籤

現在我們要添加標籤,目的是添加額外的搜索關鍵字。 (在某處也會有標籤雲,但這很容易)

我一直在閱讀不同的方式來進行正確的搜索。諸如lucene,elastic,mysql全文匹配等解決方案。

有沒有人有任何經驗來分享這樣的應用程序的最佳解決方案?

  1. 我應該把標籤放在同一個表中的一個字符串/數組字段?使用一個單獨的表?我也發現DoctrineExtensions-Taggable這看起來相當不錯,也會讓製作tagcloud變得很容易。
  2. 對於名稱的正確搜索,描述&標籤,什麼是最好的解決方案? Lucene的?彈性? myssql?到目前爲止,我認爲FOSElasticaBundle看起來是最成熟的,但不知道如何在那裏添加對標籤的搜索? (見1)

感謝您的建議!

+1

如果您在http://www.inanzzz.com/中搜索'elasticsearch'關鍵字,您會看到許多Symfony + Elasticsearch示例,這些示例可能會幫助您實現想要實現的目標。 – BentCoder

回答

1

「什麼是最好的......」通常不是在這裏問的好方法,你會得到非常有見地的答案或根本沒有答案。

因此,這裏是我的自以爲是的答案:(!你需要教教義如何使用它)

如果你有一小部分,你一定能與MySQL和對陣運行。這是最直接的做法,因爲你已經有了教條,只需要教它一點東西。 所以是的,Gedmo Taggable和一點你自己的Doctrine Extension,你有你的查詢。

如果您的可搜索數據庫將變得更大,您將需要切換到像Elastic或Solr或其他任何適當的搜索引擎。

您將需要的內容通常稱爲「分面搜索」(或在ElasticSearch中,它們現在稱爲「聚合」)。

有關Faceted Search的更多信息,例如Wikipedia

是的,一個合適的搜索引擎更酷更快,更華麗,但如果您按計劃進行並首次使用它,它可能不是最好的解決方案。

+0

感謝您花時間回答:)您的回答回答了我的問題的第二部分,但第一部分仍然有點模糊。如果我選擇使用Taggable使用MySQL全文搜索,那麼我將不知道如何讓單個查詢來搜索所有內容。我大概可以在每個表格中單獨搜索並搜索標籤上的精簡匹配項。這是否是最合乎邏輯的方法? –

+0

哎呀,對不起,我其實認爲標籤是gedmo原則擴展的一部分。看着它,我認爲你可以更好地處理與標籤之間的多種關係,並在標籤實體中搜索匹配,並將關係從中提煉出來。 – Koalabaerchen

+0

最後,我想我會使用MySQL全文搜索,我認爲在表中的字符串字段中包含標籤會更方便。我做了一個聰明的LifecycleListener來捕獲標籤的更新,並將它們添加到標籤實體中。這樣我希望能有兩全其美的。我仍然可以顯示tagcloud,但也可以輕鬆搜索。我只希望MySQL 5全文搜索不會很慢,但是我想現在可以做。 –