# Scaling full text indexing(ferret vs solr vs hyperstraier)

**URL:** <https://www.ruby-forum.com/t/scaling-full-text-indexing-ferret-vs-solr-vs-hyperstraier/162307>\
**Category:** Rails\
**Created:** [March 8, 2009, 1:15pm UTC](https://www.ruby-forum.com/t/scaling-full-text-indexing-ferret-vs-solr-vs-hyperstraier/162307 "2009-03-08T13:15:57Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![arvias](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/ac91a4/32.png) [@arvias](https://www.ruby-forum.com/u/arvias)\
**Post date:** [March 8, 2009, 1:15pm UTC](https://www.ruby-forum.com/t/scaling-full-text-indexing-ferret-vs-solr-vs-hyperstraier/162307/1 "2009-03-08T13:15:57Z")

</div>

Hi,

Does any have experience scaling full text search in RoR?

Right now our project is running a simple setup with ferret and  
acts\_as\_ferret. We are thinking about deploying a feature that would  
send 50x more search requests.

So we probably have to rethink our solution. How do services like  
[search.twitter.com](http://search.twitter.com) (the former Summize) use?

Or in what direction should I look?

–  
Thanks,  
M.

---

<div class="post-metadata">

**Author:** ![arvias](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/ac91a4/32.png) [@arvias](https://www.ruby-forum.com/u/arvias)\
**Post date:** [March 8, 2009, 2:40pm UTC](https://www.ruby-forum.com/t/scaling-full-text-indexing-ferret-vs-solr-vs-hyperstraier/162307/2 "2009-03-08T14:40:39Z")

</div>

Marcelo B. wrote:

> Right now our project is running a simple setup with ferret and  
> acts\_as\_ferret. We are thinking about deploying a feature that would  
> send 50x more search requests.

With Ferret you can scale reads horizontally: you can have multiple read  
servers on a single index. You can only have one write server on a  
single index or you’ll risk data corruption.

Another strategy is partitioning: having separate indices for buckets of  
data. Each index could run on it’s own server or cluster of servers.

–  
Roderick van Domburg  
[http://www.nedforce.com](http://www.nedforce.com)

---

<div class="post-metadata">

**Author:** ![arvias](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/ac91a4/32.png) [@arvias](https://www.ruby-forum.com/u/arvias)\
**Post date:** [March 8, 2009, 10:53pm UTC](https://www.ruby-forum.com/t/scaling-full-text-indexing-ferret-vs-solr-vs-hyperstraier/162307/3 "2009-03-08T22:53:42Z")

</div>

> With Ferret you can scale reads horizontally: you can have multiple read  
> servers on a single index. You can only have one write server on a  
> single index or you’ll risk data corruption.
> 
> Another strategy is partitioning: having separate indices for buckets of  
> data. Each index could run on it’s own server or cluster of servers.

Would it be easier to scale with hyperestraier or something else?

–  
M.

---

<div class="post-metadata">

**Author:** ![arvias](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/ac91a4/32.png) [@arvias](https://www.ruby-forum.com/u/arvias)\
**Post date:** [March 12, 2009, 10:04pm UTC](https://www.ruby-forum.com/t/scaling-full-text-indexing-ferret-vs-solr-vs-hyperstraier/162307/4 "2009-03-12T22:04:25Z")

</div>

On Sun, Mar 8, 2009 at 1:14 PM, Marcelo B. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> Does any have experience scaling full text search in RoR?

One option that worked very well for me is ultrasphinx.

[http://blog.evanweaver.com/files/doc/fauna/ultrasphinx/files/README.html](http://blog.evanweaver.com/files/doc/fauna/ultrasphinx/files/README.html)

IIRC, 2 limitations of ultrasphinx are:

- new entries can only be found after reindexing  
(full reindexing or delta indexing)
- you need a separate sphinx process somewhere on a server  
(if you run a shared hosting system, this may be an issue)

If you can live with those 2 limitations, ultrasphinx is a very good  
candidate.

HTH,

Peter
