Introducing Sphinx the company and the team:
Sphinx Search is an open source search server designed from the ground up to be fast, flexible, and to provide top-notch relevance (in terms of search results). Sphinx enables high-performance search on commodity hardware (without breaking the bank). This blog post will provide a quick introduction to the basics of Sphinx Search. We hope you enjoy!
How was it born? Why do people love it so much?
Beginning in 2001 as a response to a problem that Andrew Aksyonoff encountered while attempting to index a collection of song lyrics, Sphinx has grown into a fully featured, enterprise-ready, search server. It is now used extensively across wide ranging contexts.
From highly trafficked sites, to huge social analytic data stores; from eCommerce shops (large and small) to Job Search sites, and more– Sphinx is chosen because it is highly performant (i.e., more search with less hardware), very flexible (i.e., the Sphinx configuration file exposes a plethora of options enabling users to connect to a wide variety of data sources and tweak/tune many index/search options), and to top it off, behind Sphinx is a team of helpful and friendly fulltext search gurus ready to get you started searching like the pros.
Our expert team has helped many users (from large corporations, to small one-person startups) get started serving lighting-fast search, the right way, from the start. Choosing Sphinx, the software and the team, brings advanced fulltext search to your application while keeping the total cost of implementation low.
Licensing and services.
Sphinx is dual licensed (just like MySQL). We’ve chosen the GPL v2 and if you’ve got a use case in mind that falls outside the GPL’s terms, come talk to us about obtaining a commercial license. We’ll work with you to assure that our commercial licensing aligns with your unique use of Sphinx.
It’s easy for users to work with us (the Sphinx team) to build shiny-new features. Therefore, users who are happy with Sphinx, but feel that it’s missing some key feature, can come to us and we can develop that necessary feature for them. It’s not complicated. Sphinx development is community driven. We love our community.
We provide commercial services that generally fall under two headings: consulting and support. Support is an ongoing relationship, with predefined conditions. Things happen, and when they happen, we help you fix them. Consulting is when we get our hands really dirty. We log into your system (or even, come on-site) and beef up your search functionality for you (or, do a number of other search/indexing-related things). And, then there is also bug fixing, it’s a kind of consulting (but it’s provided with some support packages, and some support packages may also include consulting hours). But, the basic idea is that if you find some bug with Sphinx, we have services that can get those bugs fixed right away. We call this a hot bug-fix.
Think of Sphinx as a legion of search warriors. Indexer and Searchd lead the charge, but there are others that play significant roles as well, such as wordbreaker, index tool, search, and so on (check out our documentation for more details).
Indexer handles… you guessed it… indexing! Indexer handles all those tokenization options that allow you to slice and dice your data ten thousand ways. Searchd is a diligent little daemon, constantly listening for some command, it gets a query, looks at an index and serves up results. How indexes are built, and where searchd listens, is all taken care of in the configuration file.
There is a book written by our founder, Andrew Aksyonoff: “Introduction to Search with Sphinx. From installation to relevance tuning.” we recommend you read it (and the documentation) to get your mind wrapped around the Great Sphinx.
There is matching (that produces a list of ‘documents’), there is sorting (which gives ‘weight’ to those documents dependent on the users query), and there is grouping. Both matching and ranking come with many options, allowing you to get at documents in many ways. There is also distributed searching so that Sphinx can scale well. And, before we’re done with the basics, faceted search has to be mentioned. Sphinx can do it (and much more than was mentioned here)!
We recently wrote about realtime indexes, but, in short, with these kinds of indexes you don’t need to define a data source– you just push data right to Sphinx (insert/update). There are many details that are worth considering and I encourage you to read the blog post mentioned above. Realtime indexes are great for many reasons (which should be obvious). You use SphinxQL to issue commands to our realtime indexes. We recently wrote about realtime indexes on the ‘fulltext diary’, our blog.
SphinxQL, SphinxAPI, SphinxSE: what’s going on here?
These are the three interfaces to Sphinx. SphinxAPI is a general name for all those native API’s that connect Sphinx to your favorite programming languages. SphinxSE stands for ‘Sphinx Storage Engine’. It’s a nifty (but neglected) way of interacting with Sphinx from within MySQL. And, last but certainly not least is SphinxQL; our golden child.
We recommend you use SphinxQL. It’s the only way to INSERT/UPDATE realtime indexes. Our developers give it the most attention. And, its generally awesome. What is it? It’s our little Sphinx-specific subset of SQL. What’s awesome about it? Many things, but the thing that stands out most prominently is that you can fire SphinxQL queries using any MySQL client. You don’t even need to be running MySQL!! What does this mean? You can use Sphinx with any programming language supported by MySQL. For more details, please check out our documentation here.
This quick taste of some of the features of Sphinx has hopefully encouraged you to give it a try. And, please do! It’s free (open source), and easy to get going with (even easier with help from our team). So, if you have any questions, or if you just feel like talking about Sphinx stuff, find us on twitter: @sphinxsearch.
Steve Barker | Sphinx Community Manager
+1 (888) 333-1345