Zinx is a Ruby DSL for the Sphinx Search Engine (which is used in a lot of big sites). It is a simple wrapper around the oficial Ruby API. The main goal is to have a more friendly way of searching Sphinx.
Most methods are just a wrap around the corresponding Sphinx API method. Best thing to do is to read the code, it's quite simple.
gem install zinx
match_mode :extended
ranking_mode :word_count
field_weight 'field1', 1000
field_weights {'field1' => 1000, 'field2' => 50}
index_weight 'index1', 400
index_weights {'index2' => 100, 'index3' => 231}
results = search 'simple'
results = search 'simple', :filter => {'field' => 'value'}
# or
results = search 'simple' do
filter 'field', 'value'
end
results = search 'simple', :sort => {:expr => '@weight + 10'}
# or
results = search 'simple' do
sort :expr, '@weight + 10'
end
results = search 'simple', :group => {:attr => 'field'}
# or
results = search 'simple' do
group :attr, 'field'
end
results = search 'simple', :select => 'field1, field2, field3'
# or
results = search 'simple' do
select 'field1, field2, field3'
end
# this will return an array of 3 results
results = search 'simple' do
filter 'field', 'value'
sort :expr, '@weight + 10'
add_query
filter 'field2', 'value2'
group :attr, 'field2'
add_query
reset_groups
select 'SUM(1) AS total'
group :attr, 'total'
add_query
end
results = search 'simple', :select => 'field1, field2, @weight'
# error?
puts results.first.error
# matches
puts results.matches
# accessig fields
puts results.matches.first.field1
puts results.matches.first.weight