8
@xapian_database = Xapian::Database.new(@path)
11
def search(terms, user_opts={})
12
opts = {:offset => 0, :limit => 10}.merge(user_opts)
14
query_parser = Xapian::QueryParser.new
15
query_parser.database = @xapian_database
16
query_parser.stemmer = Xapian::Stem.new("english")
17
query_parser.stemming_strategy = Xapian::QueryParser::STEM_SOME
19
enquire = Xapian::Enquire.new(@xapian_database)
20
enquire.query = query_parser.parse_query(terms)
21
return XapianResultSet.new(enquire.mset(opts[:offset], opts[:limit]))
25
class SearchResultSet; end
27
class XapianResultSet < SearchResultSet
33
@mset.matches.each &blk
41
@mset.matches_estimated
46
$stderr.puts "Usage: #{$0} PATH_TO_DATABASE QUERY"
50
# Open the database for searching.
51
database = Index.new(ARGV[0])
52
result_set = database.search(ARGV[1..-1].join(' '))
54
# Display the results.
55
puts "#{result_set.total_results} results found."
56
puts "Matches 1-#{result_set.page_size}:\n"
59
puts "#{m.rank + 1}: #{m.percent}% docid=#{m.docid} [#{m.document.data}]\n"