Best way to add full web search to my site? - ruby-on-rails

I need to add full web search to my site. I need something like Google Custom Search but with no ads and it has to be free. Any recommendation of a web service or open source project that can index my site and allow me to search it will be helpful.
My site is made in ruby on rails, if that helps.
I'll make this question community-wiki so you can edit my bad English. I think many people can benefit from this question.

Check out Lucene. It's an open source search engine that will certainly be a fun learning experience to implement on your own site. It was originally designed by the Excite folks, I do believe.

Ferret is the Ruby port of Lucene. Check out the acts_as_ferret plugin.

Depends what you mean by full web search really. If you want to search the whole web then the answers above wont help you much as they are really for indexing and searching the content of your site. I would suggest using the Google ajax search (just a 'powered by google' needed, no ads) or Boss from yahoo (might require ads not sure).
http://code.google.com/apis/ajaxsearch/
http://developer.yahoo.com/search/boss/

People are going to acts_as_solr and thinking sphinx in the blogs i read:
http://acts-as-solr.rubyforge.org/
http://ts.freelancing-gods.com/
I've aslo been looking at tsearch in postgres, it looks very capable:
http://www.sai.msu.su/~megera/postgres/gist/tsearch/V2/

What do you mean by "full web search"?
The are good answers available for full-text search where a search engine indexes and queries the model objects stored in your database.
If you mean something that indexes and queries your rendered HTML, Nutch is a popular option with a web-crawler, parser, indexer, and query interface.

I recommend acts_as_xapian. It's very easy to implement, it's fast enough, and it's the got the features you'll normally need.

Related

Integrating GCS on a staging Jekyll website

We currently have a staging website, which has an IP address like xx.xx.xxx.xxx and we would like to have integrated and tested GCS on it before pushing it live. Is it possible?
Otherwise, is there any alternative to GCS to add a search bar in a Jekyll blog without using plugin?
Thanks!
PART I: Google
Google custom search cannot index an application that isn't available to the internet.
No, that's not entirely true. You can arrange something with Google (in theory, never done it) but it doesn't look easy. Or cheap.
You could set up a custom search for an unrelated site and embed those results in your local page, if you want to test out CSS prior to launch.
Remember, Google Custom Search also comes with ads, unless you pay. And the results tend to look like they came from Google.
PART II: Alternatives
I've looked into this extensively and I haven't come up with a good answer. Here are some not-so-good answers:
1) Tapir Search. This actually worked pretty well, but appears to have died. They do have recent twitter activity, however, so maybe worth checking back in a bit. twitter. It's basically a (free) front end for an elasticsearch server. I think. Neat service, obviously not super-dependable.
2) Go javascript. Lunr for example. There are many, many similar solutions available. Sadly, they are client-side and doing a full-text search on even a smallish blog type site can be very slow. Works okay if you limit the search to titles, but then...you're only searching titles.
3) Build a search engine server. Maybe some breed of Lucene. Upside: very robust search while keeping the snappy response of a flat HTML site. Downside: building and maintaining a search engine server is difficult, expensive and probably overkill.
4) Hosted search engine. Algolia for example. They're basically doing 3) for you. Relatively expensive (~$50/month) but well worth the cost, because, seriously, search engine servers are finicky and prone to explosions. I've never gone this route with Jekyll because I've never had a Jekyll project I was quite that serious about, but I did consider it.
If anyone has anything to add, I'd love to hear it. This question has been irritating me for a while.

How do I create a search engine or modify an existing one for searches only within a website?

I am creating a website using Ruby on Rails, HTML (of course), CSS (of course), JavaScript, Sqlite 3, and Ajax while running an Apache server.
I want to have a search feature that only searches for content on the website: people, places, ideas, topics, etc.
How would I go about getting such a feature on my website and what search "programs" would you advise?
P.S. I already am aware of the Google search thingy.
This question feels like you haven't even bothered to investigate it by yourself.
I guess all your content is coming from your database? You have to connect your database with your searchengine and search for your data.
You should probably search for a tutorial on SQLite Databases.

Setting up search page and filter (similar to ecommerce)

I'm building my first rails app and I'm trying to build the search page on an ecommerce type site. The idea is the model pulls all the data from the database according to the filter that is checked or selected on the view such as (category, sub-category, price, date, etc.)
I've watched railscasts on elasticsearch, solar, etc. They seem like they'd each work in this scenario but are they overkill? I'm just not sure what is the quickest and most scalable way to set up this search. I've read a little about the has_scope gem which seems like it would be one way but I can't find a good tutorial or documentation on has_scope. Can someone point me in the right direction for creating this search page? Should I build it out with has_scope, solar, or elasticsearch?
Thanks
In my own experience solr is the best search technology I've come across. It provides a feature called faceting which is what you are describing. You can read about it on their wiki here: http://wiki.apache.org/solr/SolrFacetingOverview
The best solr gem I've come across is sunspot. It has a very easy to use DSL for interfacing with solr from a Rails app and hooks in to active record very easily. Take a look at their github project page. I think that will answer your question.

Best search option for a heroku-hosted Rails app?

I've been working on a new project lately where a fantastic search engine is crucial. It's a rails3 app hosted on heroku and I'm looking into possible solutions(a rubygem would be ideal) which offer a easy way to have powerful full-text search.
Right now, I'm using acts_as_tsearch which leverages PostgreSQL and performs a basic MATCH query. Though, it's not really pulling back good results(for example, if I search for "create a project" and "how do i create a project" exists as a query, it doesn't find it).
Can anyone share their experiences with full text search, anyone tried out Solr ?
IndexTank is your best bet. They were recently added as a Heroku add-on.
We recently tried to just run our own search for our Heroku app and it's just not worth it because you have to worry about stability and scaling of that search box. It's better to go with a provider, like IndexTank.
IndexTank also powers Reddit and Wordpress.com, so can bet it'll be reliable.
SOLR works very nicely -- it's a bit pricey to get starts ($20 a month), but it just works, and works well.
They recently added the ability to ask the user "Did you mean to search for [correct spelling]".
You can easily cross-model search (search for Users and Cars and Dealerships).
Heroku offers addons which you can easily add to your application. You should take a look at Solr and IndexTank.
There's a free solution in the Texticle gem. It uses PostgreSQL's (> 8.3) full text index support and creates a search method on your models. If you create indexes, the speed is very good (for a free solution).
Hope that helps!

Arabic full text search in RoR

I am trying to add full text search capabilities to my RoR app, but facing some issues when it comes to Arabic. AFAIK, there aren't many search engines out there that support arabic stemming, morphology and other advanced full text search. The only thing I found was Lucene with the AraMorph tokenizer.
The acts_as_solr plugin (solr is based on lucene, and this plugin integrates it with Rails) seems to be abandoned, and I can't find any helpful documentation.
I've looked into sphinx, xapian, ferret, and acts_as_searchable but none of them offers advanced arabic search functionality to the best of my knowledge.
Any help would be really appreciated
== Update
I've got suggestions to use sphinx, and I did use it on an earlier project, and it works just fine. However, it does not provide any advanced search capabilities.
for instance, the words: كتاب (book), مكتبة (library), and كاتب (writer) are all derived from the same stem كتب. I want to have the ability to search for "writer" and get results for all words derived from the same stem.
Also, I want the search to take into account common arabic dictation styles. Some use the "hamza" (همزة) and some people don't. Others write words with the letter "taa marboota" (التاء المربوطة) while others use the letter "haa" (الهاء). A good arabic search engine should realize such subtle differences and look for them.
With sphinx you only get what you search for, and the only engine I found to accommodate such matters in the arabic language, was Lucene with AraMorph tokenizer. However, acts_as_solr (the lucene plugin for rails) is abandoned . So my question is: is there any other such tokenizer for any search engine?
KandadaBoggu mentioned sunspot, I'll give that a go, and respond back
You should try this by extending Thinking Sphinx options
Read this: http://www.expressionlab.com/2008/11/19/thinking-sphinx-in-arabic-unicode
For Solr use Sunspot and Sunspot Rails.
For Sphinx use Thinking Sphinx
Both gems are excellent and have a large install base. I have used ThinkingSphinx in few projects and I highly recommend it.

Resources