2011-03-02 55 views

回答

2

我會使用思維獅身人面像,全文搜索引擎也可部署在heroku上。

它的地理搜索內置:http://freelancing-god.github.com/ts/en/geosearching.html

編輯:

斯芬克斯已準備得差不多了Heroku的,在這裏看到:http://flying-sphinx.com/

+0

根據Google集團的帖子(可能已經過時),Heroku不支持Sphinx:https://groups.google.com/forum/#!topic/thinking-sphinx/aWBIf7qhcN8 – 2011-03-02 22:39:38

+0

剛剛編輯了我的答案,它是部分的答案。告訴我,如果你願意,我刪除我的答案,以便你的問題更加明顯。 – apneadiving 2011-03-02 22:45:40

+0

+1獅身人面像現在可用,這將是我的選擇 – standup75 2011-05-18 19:03:35

3

根據應用程序的規模,你應該能夠輕鬆實現MySQL中的FULLTEXT和SPATIAL索引。一旦您的應用程序變得龐大,即數以億計的行具有高併發性和每秒數千個請求的倍數,則您可能需要遷移到另一個FULLTEXT或SPATIAL查詢解決方案。但是,我不會推薦在早期進行優化,因爲要做到這一點非常困難。在可預見的未來,MySQL應該足夠了。

您可以閱讀關於MySQL here中的空間索引。您可以閱讀MySQL here中的全文索引。最後,我建議您採取步驟here的步驟,讓您的schema.rb文件和rake任務與這兩種索引類型一起工作。

我只使用了MySQL,但我的理解是PostgreSQL也有一個很好的地理空間索引解決方案。

+0

+1你知道一個很好的gem用於向ActiveRecord添加mysql空間支持嗎? – 2011-05-12 06:35:04

+0

我真的很喜歡rgeo(https://github.com/dazuma/rgeo),我之前也使用過geokit和GeoRuby。 – 2011-05-12 20:08:34

3

如果您在Heroku有一個數據庫,您可以使用Postgres對全文搜索的支持:http://www.postgresql.org/docs/8.3/static/textsearch.html。 Heroku運行的最舊的服務器(共享數據庫)在8.3和8.4上。最新的9.0版本。

博客文章注意到這一點其實可以在這裏看到:https://tenderlovemaking.com/2009/10/17/full-text-search-on-heroku.html

顯然,認爲「texticle」(嘿可愛。)插件工程...不錯。據我所知,它甚至會爲你創建正確的索引。

這是潛在的故事:postgres全文搜索是相當快速和無憂無慮的(雖然Rails集成可能不是很好),雖然它不提供Solr或IndexTank的花裏胡哨。確保你閱讀了如何正確設置GIN和/或GiST索引,並使用tsvector/tsquery類型。

短的版本:

  • 創建(在這種情況下,基於表達式的)指數:CREATE INDEX pgweb_idx ON pgweb USING gin(to_tsvector('english', body));。在這種情況下,「body」是被索引的字段。
  • 使用@@操作:SELECT * FROM ... WHERE to_tsvector('english', pgweb.body) @@ to_tsquery('hello & world') LIMIT 30

難的部分可以被映射回事情到應用程序的土地,前面提到的博客文章正在努力做到這一點。

專用數據庫也可以通過PostGIS進行申請,PostGIS是一個功能強大且功能全面的系統,用於索引和查詢地理數據。 OpenStreetMap廣泛使用PostgreSQL幾何類型(內置),許多人將其與PostGIS結合起來,效果很好。

這些(全文搜索,PostGIS)都利用了Postgres中的可擴展數據類型和索引基礎結構,因此您應該期望它們能夠爲許多許多記錄提供高性能(花一點時間仔細查看如果事情看起來很糟糕)。您也可以利用這一事實,即您可以將這些功能與事務和結構化數據結合使用。例如:

CREATE TABLE products (pk bigserial, price numeric, quantity integer, description text);可以很容易地使用全文搜索...任何文本字段都可以,並且它可以與常規屬性(在這種情況下爲價格,數量)相關聯。

0

IndexTank現在免費提供Heroku上的100k文檔,我們只是沒有更新文檔。這可能不足以滿足您的需求,但我想我會讓您知道以防萬一。

0

要通過Postgre進行全文搜索,我推薦pg_search,我現在在heroku上自己使用它。我沒有使用texticle,但從我可以看到pg_search最近有更多的開發活動,它建立在texticle上(它不會爲您添加索引,您必須自己動手)。

我現在找不到線程,但是我看到Heroku提供了pg geo搜索的選項,但它處於測試階段。

我的建議是,如果你無法找到postgre解決方案是託管你自己的SOLR實例(在EC2實例上),並使用sunspot solr gem將其與rails集成。

我已經實現了我自己的解決方案,並且還使用了WebSolr。基本上這就是他們給你自己的SOLR實例無憂無慮的。在我看來沒有,這是否值錢?對於使用太陽黑子解決方案客戶端的集成,所以您只需支付20美元/ 40美元/人就可以爲您安裝SOLR。我知道你也會得到備份,維護等,但是打電話給我便宜,我更喜歡我自己的實例。另外WebSolr被鎖定在1.4.x版本的SOLR上。

相關問題