Another Word For It Patrick Durusau on Topic Maps and Semantic Diversity

November 15, 2011

Lucy (not in the sky with diamonds)

Filed under: Lucy,Perl — Patrick Durusau @ 7:57 pm

Lucy (not in the sky with diamonds)

From the overview:

Apache Lucy is full-text search engine library written in C and targeted at dynamic languages. It is a “loose C” port of Apache Lucene™, a search engine library for Java.

From the FAQ:

Are Lucy and Lucene compatible?

No. Lucy is a “loose” port of Lucene designed to take full advantage of C’s unique feature set, rather than a line-by-line translation from Java. The two libraries are not compatible in terms of either file format or API, and there are no plans to establish such compatibility.

Is Lucy faster than Lucene? It’s written in C, after all.

That depends. As of this writing, Lucy launches faster than Lucene thanks to tighter integration with the system IO cache, but Lucene is faster in terms of raw indexing and search throughput once it gets going. These differences reflect the distinct priorities of the most active developers within the Lucy and Lucene communities more than anything else.

Does Lucy provide a search server like Solr?

Lucy is a low-level library, like Lucene. We’d like to provide a search server eventually, but it will likely be a thin wrapper rather than a comprehensive application like Solr. The low-level capabilities are our core mission.

Why don’t you use Swig?

A major design goal of Lucy is to present bindings which are as idiomatic as possible so that our users feel as though they are programming in their native language and not in C. Swig is a great tool, but it does not offer support for many of the features which make Lucy so user friendly: subclassing, named parameters, default argument values, etc.

I poked around in the former KinoSearch archives, does “dynamic languages” = Perl? Just curious.

2 Comments

  1. Those interested in Lucy might also be interested in Xapian (http://xapian.org), which is a project with similar scope and maturity to Java Lucene, but implemented in C++, with bindings from many dynamic languages (and also from Java!).

    Most bindings for Xapian are implemented in SWIG, which actually does offer support for many of the features listed; in particular, subclassing (in most languages, anyway – certainly in PHP, python, perl), named parameters, and default arguments. I admit that SWIG is quite a hard tool to use, but it can give great results. In particular, the Xapian python bindings are very natural to use, with native iterators and various minor alterations to the Xapian API to make them more natural for python programmers.

    (Full disclosure: I’m one of the Xapian developers.)

    Comment by rboulton — November 16, 2011 @ 8:40 am

  2. Thanks! Appreciate the pointer to Xapian!

    Comment by Patrick Durusau — November 16, 2011 @ 9:24 am

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.

Powered by WordPress