Posted By: David Balmain
Date: 2005-11-15 09:33
Summary: Ferret 0.2.1
Project: ferret

Ferret 0.2.1 has just been released with many cool new features such as multi-threading, multi-field searches, index merging, compound file support easy updates and deletes and a unique primary key constraint on the index. There are a few bug fixes in there too.

== Changes

=== Multifield searches

You can now do multi field searches using the query parser.

# search the title and content fields for ruby
index.search_each("title|content:ruby") {|doc, score| puts
"#{doc}:#{score}"}

# search all fields for ruby
index.search_each("*:ruby") {|doc, score| puts "#{doc}:#{score}"}

=== Compound file support and Apache Lucene index reading

You can now store your index in compound files which reduces the
number of files used by the index. This is useful as your index gets
bigger to prevent a too many files open index. It is also handy for
reading Apache Lucene indexes as Apache Lucene uses compound file
format by default.

=== Merging indexes

You can now merge two or more existing indexes into one. The is useful
if you want to have indexers working in parallel to create your index
and then merge all the indexes together create one final index.

# add indexes 1 to 10 to the final index
index.add_indexes([index1, index2, ... , index10])

=== Persisting in Memory index.

You can gain a little in performance by using an in memory index for
your indexing and then persisting it to your file system when you are
finished.

index = Index::Index.new()

# do all your indexing

index.persist("/path/to/your/index/directory")

=== Thread safety

Ferret is now threadsafe so feel safe to use it in a multithreaded
environment. Check out the thread tests in the test/functional
directory in the latest distribution.

=== Easy update and delete

You can now use a query to do a delete;

index.query_delete("content:java or content:perl")

And you can now easily update documents;

index.update(34, doc)
index.query_update('author:"David Balmain"', {:author => "Dave Balmain"})

=== Primary Key

The latest addition is a primary key to the index. Note that this only
works through the Index::Index class and should only be used if you
know what you are doing.

index = Index::Index.new(:key => ["id", "table"])
index << {:id => 1123, :table => "product", :product = "Jacket"}
# ...
# The following will replace the Jacket product with a t-shirt
index << {:id => 1123, :table => "product", :product = "T-Shirt"}

Latest News
Version 1.6.0 of Mxx_ru released
    Nicolay Shmakov - 2013-06-19 12:07
TZInfo v1.0.0 and TZInfo::Data v1.2013.3 Released
    Philip Ross - 2013-06-02 17:12
icalendar 1.4.0 Released
    Ryan Ahearn - 2013-05-21 23:17
BinData 1.5.0 - source moved to github
    Dion Mendel - 2013-05-21 11:10
v13.5.0 Released !!
    id 774 - 2013-05-18 12:28

 

Forums | Admin

Discussion Forums: ferret-0.2.1-released

Start New Thread Start New Thread

 

Topic Topic Starter Replies Last Post