Hi,
it looks like Ferret still compares numeric fields by lexical ordering,
not numerical ordering. I am using Ferret 0.11.4(I tried in both linux
and windows, the results are the same).
index = Ferret::Index::Index.new()
docs = [
{:num => 1, :data => “yes”},
{:num => 1, :data => “no”},
{:num => 10, :data => “yes”},
{:num => 10, :data => “no”},
{:num => 100, :data => “yes”},
{:num => 100, :data => “no”},
{:num => 1000, :data => “yes”},
{:num => 1000, :data => “no”}
]
?> puts index.process_query(‘data:yes AND num:[10 100]’)
+data:yes +num:[10 100]
=> nil
puts index.search('d:data:yes AND num:[10 100]')
TopDocs: total_hits = 2, max_score = 1.777895 [
2 “”: 1.777895
4 “”: 1.777895
]
=> nil
puts index.process_query('data:yes AND num:[2 100]')
num:“data yes <> num 2 100”~4
=> nil
puts index.process_query('num:[2 100]')
num:“num 2 100”~2
=> nil
puts index.search('num:[2 100]')
TopDocs: total_hits = 0, max_score = 0.000000 [
]
=> nil
puts index.process_query('num:>2')
num:{2>
=> nil
puts index.search('num:>2')
TopDocs: total_hits = 0, max_score = 0.000000 [
]
=> nil
According to the release note for Ferret 0.10.6 at
http://rubyforge.org/forum/forum.php?forum_id=9058, “Range queries just
work. No need to pad numbers or format dates correctly.”
Is this a new bug?
Thanks.
Yaxm