Mercurial Hosting > luan
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 |