comparison lucene/src/luan/modules/lucene/Web_search.luan @ 515:1b2e4c7dab85

fix lucene sort and improve Web_search
author Franklin Schmidt <fschmidt@gmail.com>
date Tue, 26 May 2015 02:05:22 -0600
parents 7bc63886d4f2
children 5fed3de0aac7
comparison
equal deleted inserted replaced
514:7d1afc73f835 515:1b2e4c7dab85
1 local Luan = require "luan:Luan" 1 local Luan = require "luan:Luan"
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 Io = require "luan:Io" 7 local Io = require "luan:Io"
7 local Http = require "luan:http/Http" 8 local Http = require "luan:http/Http"
8 local String = require "luan:String" 9 local String = require "luan:String"
9 local Html = require "luan:Html" 10 local Html = require "luan:Html"
10 11
23 <div row> 24 <div row>
24 <div colspan=2 align="right"> 25 <div colspan=2 align="right">
25 <label>Query:</label> 26 <label>Query:</label>
26 </div> 27 </div>
27 <div colspan=10> 28 <div colspan=10>
28 <input name="query" size="80" value="Query.all_docs" autofocus /> 29 <input name="query" size="80" value="query.all_docs" autofocus />
29 <div textcolor="#888">Query examples: <i>Query.term{ type = 'user' }</i> or <i>"type:user AND name:Joe"</i></div> 30 <div textcolor="#888">Query examples: <i>query.term{ type = 'user' }</i> or <i>"type:user AND name:Joe"</i></div>
30 </div> 31 </div>
31 </div> 32 </div>
32 <div row margin-top="1em"> 33 <div row margin-top="1em">
33 <div colspan=2 align="right"> 34 <div colspan=2 align="right">
34 <label>Max Rows:</label> 35 <label>Max Rows:</label>
41 <div colspan=2 align="right"> 42 <div colspan=2 align="right">
42 <label>Sort:</label> 43 <label>Sort:</label>
43 </div> 44 </div>
44 <div colspan=10> 45 <div colspan=10>
45 <input name="sort" size="60" /> 46 <input name="sort" size="60" />
46 <div textcolor="#888">Sort examples: Query.sort{{ field = 'id', type='int' }}</div> 47 <div textcolor="#888">Sort examples: sort{{ field = 'id', type='int' }}</div>
47 </div> 48 </div>
48 </div> 49 </div>
49 <div row margin-top="1em"> 50 <div row margin-top="1em">
50 <div colspan=2></div> 51 <div colspan=2></div>
51 <div colspan=10> 52 <div colspan=10>
72 <div row> 73 <div row>
73 <div colspan=2 align="right"> 74 <div colspan=2 align="right">
74 <label>Query:</label> 75 <label>Query:</label>
75 </div> 76 </div>
76 <div colspan=10> 77 <div colspan=10>
77 <b><%=query%></b></p> 78 <b><%=Html.encode(to_string(query))%></b></p>
78 </div> 79 </div>
79 </div> 80 </div>
80 <div row> 81 <div row>
81 <div colspan=2 align="right"> 82 <div colspan=2 align="right">
82 <label>Sort:</label> 83 <label>Sort:</label>
83 </div> 84 </div>
84 <div colspan=10> 85 <div colspan=10>
85 <b><%=sort%></b></p> 86 <b><%=Html.encode(to_string(sort))%></b></p>
86 </div> 87 </div>
87 </div> 88 </div>
88 <table border condensed margin-top="1.5em"> 89 <table border condensed margin-top="1.5em">
89 <tr> 90 <tr>
90 <th></th> 91 <th></th>
127 local query_string = Http.request.parameter.query 128 local query_string = Http.request.parameter.query
128 if query_string == nil then 129 if query_string == nil then
129 form() 130 form()
130 return 131 return
131 end 132 end
132 local query = load(query_string,"<query>",{Query=index.query},true)() 133 local query = load(query_string,"<query>",{query=index.query},true)()
133 local rows = Http.request.parameter.rows.to_number() 134 local rows = Http.request.parameter.rows.to_number()
134 local sort = load(Http.request.parameter.sort,"<sort>",{Query=index.query},true)() 135 local sort = load(Http.request.parameter.sort,"<sort>",{sort=index.query.sort},true)()
135 index.Searcher( function(searcher) 136 index.Searcher( function(searcher)
136 local results, length, total_hits = searcher.search(query,rows,sort) 137 local results, length, total_hits = searcher.search(query,rows,sort)
137 local headers = {} 138 local headers = {}
138 local table = {} 139 local table = {}
139 for doc in results do 140 for doc in results do