Mercurial Hosting > luan
comparison lucene/src/luan/modules/lucene/Lucene.luan @ 542:7170a0c414d5
better numeric term query
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Mon, 01 Jun 2015 21:48:57 -0600 |
parents | 4362eb720da9 |
children | c5a93767cc5c |
comparison
equal
deleted
inserted
replaced
541:fda38db30e65 | 542:7170a0c414d5 |
---|---|
15 local TermRangeQuery = require "java:org.apache.lucene.search.TermRangeQuery" | 15 local TermRangeQuery = require "java:org.apache.lucene.search.TermRangeQuery" |
16 local NumericRangeQuery = require "java:org.apache.lucene.search.NumericRangeQuery" | 16 local NumericRangeQuery = require "java:org.apache.lucene.search.NumericRangeQuery" |
17 local MatchAllDocsQuery = require "java:org.apache.lucene.search.MatchAllDocsQuery" | 17 local MatchAllDocsQuery = require "java:org.apache.lucene.search.MatchAllDocsQuery" |
18 local BooleanQuery = require "java:org.apache.lucene.search.BooleanQuery" | 18 local BooleanQuery = require "java:org.apache.lucene.search.BooleanQuery" |
19 local BooleanClause = require "java:org.apache.lucene.search.BooleanClause" | 19 local BooleanClause = require "java:org.apache.lucene.search.BooleanClause" |
20 local BytesRef = require "java:org.apache.lucene.util.BytesRef" | |
21 local NumericUtils = require "java:org.apache.lucene.util.NumericUtils" | |
20 local Sort = require "java:org.apache.lucene.search.Sort" | 22 local Sort = require "java:org.apache.lucene.search.Sort" |
21 local SortField = require "java:org.apache.lucene.search.SortField" | 23 local SortField = require "java:org.apache.lucene.search.SortField" |
22 | 24 |
23 local M = {} | 25 local M = {} |
24 | 26 |
88 local tp = type(value) | 90 local tp = type(value) |
89 if tp == "string" then | 91 if tp == "string" then |
90 return TermQuery.new(Term.new(field,value)) | 92 return TermQuery.new(Term.new(field,value)) |
91 end | 93 end |
92 if tp == "number" then | 94 if tp == "number" then |
93 return queryTbl.range(field,value,value) | 95 local br = BytesRef.new() |
96 tp = number_type(value) | |
97 if tp == "integer" then | |
98 NumericUtils.intToPrefixCoded(value,0,br) | |
99 elseif tp == "long" then | |
100 NumericUtils.longToPrefixCoded(value,0,br) | |
101 elseif tp == "double" then | |
102 value = NumericUtils.doubleToSortableLong(value) | |
103 NumericUtils.longToPrefixCoded(value,0,br) | |
104 else | |
105 error("invalid term value type: "..tp) | |
106 end | |
107 return TermQuery.new(Term.new(field,br)) | |
94 end | 108 end |
95 error("invalid term value type: "..tp) | 109 error("invalid term value type: "..tp) |
96 end | 110 end |
97 | 111 |
98 function queryTbl.range(field,min,max,include_min,include_max) | 112 function queryTbl.range(field,min,max,include_min,include_max) |