Mercurial Hosting > luan
comparison lucene/src/luan/modules/lucene/Web_search.luan @ 544:c5a93767cc5c
lucene overhaul, untested
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 12 Jun 2015 19:11:44 -0600 |
parents | 4362eb720da9 |
children | ddcd4296107a |
comparison
equal
deleted
inserted
replaced
543:9767da72545b | 544:c5a93767cc5c |
---|---|
2 local load = Luan.load | 2 local load = Luan.load |
3 local pairs = Luan.pairs | 3 local pairs = Luan.pairs |
4 local ipairs = Luan.ipairs | 4 local ipairs = Luan.ipairs |
5 local range = Luan.range | 5 local range = Luan.range |
6 local to_string = Luan.to_string | 6 local to_string = Luan.to_string |
7 local Number = require "luan:Number" | |
8 local integer = Number.integer | |
9 local long = Number.long | |
10 local double = Number.double | |
11 local Io = require "luan:Io" | 7 local Io = require "luan:Io" |
12 local Http = require "luan:http/Http" | 8 local Http = require "luan:http/Http" |
13 local String = require "luan:String" | 9 local String = require "luan:String" |
14 local string_to_number = String.string_to_number | 10 local string_to_number = String.string_to_number |
15 local Html = require "luan:Html" | 11 local Html = require "luan:Html" |
29 <div row> | 25 <div row> |
30 <div colspan=2 align="right"> | 26 <div colspan=2 align="right"> |
31 <label>Query:</label> | 27 <label>Query:</label> |
32 </div> | 28 </div> |
33 <div colspan=10> | 29 <div colspan=10> |
34 <input name="query" size="80" value="query.all_docs" autofocus /> | 30 <input name="query" size="80" autofocus /> |
35 <div textcolor="#888">Query examples: <i>query.term{ type = 'user' }</i> or <i>"type:user AND name:Joe"</i></div> | 31 <div textcolor="#888">Query examples: <i>type:user</i> or <i>+type:user +name:Joe"</i></div> |
36 </div> | 32 </div> |
37 </div> | 33 </div> |
38 <div row margin-top="1em"> | 34 <div row margin-top="1em"> |
39 <div colspan=2 align="right"> | 35 <div colspan=2 align="right"> |
40 <label>Max Rows:</label> | 36 <label>Max Rows:</label> |
47 <div colspan=2 align="right"> | 43 <div colspan=2 align="right"> |
48 <label>Sort:</label> | 44 <label>Sort:</label> |
49 </div> | 45 </div> |
50 <div colspan=10> | 46 <div colspan=10> |
51 <input name="sort" size="60" /> | 47 <input name="sort" size="60" /> |
52 <div textcolor="#888">Sort examples: sort{{ field = 'id', type='int' }}</div> | 48 <div textcolor="#888">Sort examples: <i>name, id</i></div> |
53 </div> | 49 </div> |
54 </div> | 50 </div> |
55 <div row margin-top="1em"> | 51 <div row margin-top="1em"> |
56 <div colspan=2></div> | 52 <div colspan=2></div> |
57 <div colspan=10> | 53 <div colspan=10> |
128 | 124 |
129 function M.of(index) | 125 function M.of(index) |
130 | 126 |
131 return function() | 127 return function() |
132 Io.stdout = Http.response.text_writer() | 128 Io.stdout = Http.response.text_writer() |
133 local query_string = Http.request.parameter.query | 129 local query = Http.request.parameter.query |
134 if query_string == nil then | 130 if query == nil then |
135 form() | 131 form() |
136 return | 132 return |
137 end | 133 end |
138 local query_env = { | |
139 query=index.query; | |
140 integer=integer; | |
141 long=long; | |
142 double=double; | |
143 } | |
144 local query = load(query_string,"<query>",query_env,true)() | |
145 local rows = string_to_number(Http.request.parameter.rows) | 134 local rows = string_to_number(Http.request.parameter.rows) |
146 local sort = load(Http.request.parameter.sort,"<sort>",{sort=index.query.sort},true)() | 135 local sort = Http.request.parameter.sort |
147 index.Searcher( function(searcher) | 136 index.Searcher( function(searcher) |
148 local results, length, total_hits = searcher.search(query,rows,sort) | 137 local results, length, total_hits = searcher.search(query,rows,sort) |
149 local headers = {} | 138 local headers = {} |
150 local table = {} | 139 local table = {} |
151 for doc in results do | 140 for doc in results do |