annotate searchService/searchSolr.py @ 40:671dd1e4bd09 default tip

minor bug
author dwinter
date Wed, 05 Mar 2014 10:20:54 +0100
parents 9ef155b1eec5
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
20
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
1 '''
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
2 Created on 16.11.2012
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
3
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
4 @author: dwinter
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
5 '''
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
6
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
7 import solr
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
8 import web
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
9 import urllib
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
10 import os.path
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
11 import json
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
12 import urllib2
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
13 import logging
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
14
21
90643ccc6545 cross scripting and xml mime-type
dwinter
parents: 20
diff changeset
15 SOLR_SERVER="https://md.mpiwg-berlin.mpg.de/solr"
90643ccc6545 cross scripting and xml mime-type
dwinter
parents: 20
diff changeset
16 #SOLR_SERVER="http://127.0.0.1:8983/solr"
20
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
17 DRI_SERVER="http://md.mpiwg-berlin.mpg.de/"
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
18
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
19 class searchSolr:
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
20
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
21 def __init__(self):
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
22 #logging.basicConfig(filename='/tmp/solr.log',level=logging.DEBUG)
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
23 self.con = solr.SolrConnection(SOLR_SERVER,debug=False)
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
24
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
25 self.search = solr.SearchHandler(self.con,"/collection1/select")
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
26
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
27
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
28 def GET(self):
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
29 paras = web.input()
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
30
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
31 if not hasattr(paras,'text-url-path'):
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
32 return "usage: ?text-url-path=PATH"
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
33
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
34 if getattr(paras,'format','')== "short":
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
35 short=True
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
36 else:
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
37 short=False
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
38
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
39
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
40 queryString=paras.get("text-url-path")
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
41
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
42 return self.doGet(queryString,short=short)
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
43
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
44 def doGet(self,queryString,short=False):
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
45
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
46 queryString="""text-url-path:"%s" """%queryString
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
47 response = self.search(queryString)
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
48
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
49 ret=""
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
50 hitId=0
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
51 rows=[]
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
52
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
53 ret="<results>"
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
54
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
55 for hit in response:
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
56
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
57 ret+="<result>"
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
58
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
59 if short:
24
9ef155b1eec5 description added
dwinter
parents: 22
diff changeset
60 key="archive-path"
20
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
61 r=hit.get(key)
22
f748e2b684c9 bug in xml output fixed
dwinter
parents: 21
diff changeset
62 ret+="""<%s>%s</%s>"""%(key,r,key)
20
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
63
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
64 else:
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
65
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
66 for key in hit.keys():
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
67 res=hit.get(key)
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
68 if not isinstance(res, list):
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
69 res=[res]
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
70
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
71
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
72
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
73 for r in res:
22
f748e2b684c9 bug in xml output fixed
dwinter
parents: 21
diff changeset
74 if not key.startswith("_"):
f748e2b684c9 bug in xml output fixed
dwinter
parents: 21
diff changeset
75 ret+="""<%s>%s</%s>"""%(key,r,key)
20
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
76
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
77 #ret.append(hit.get('archive-path'))
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
78
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
79 ret+="</result>"
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
80
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
81
21
90643ccc6545 cross scripting and xml mime-type
dwinter
parents: 20
diff changeset
82 web.header('Content-Type', 'text/xml')
90643ccc6545 cross scripting and xml mime-type
dwinter
parents: 20
diff changeset
83 web.header('Access-Control-Allow-Origin', '*')
90643ccc6545 cross scripting and xml mime-type
dwinter
parents: 20
diff changeset
84 web.header('Access-Control-Allow-Credentials', 'true')
90643ccc6545 cross scripting and xml mime-type
dwinter
parents: 20
diff changeset
85
20
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
86 return ret+"</results>"
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
87
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
88
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
89
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
90
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
91
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
92
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
93 if __name__ == '__main__':
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
94 sl = searchSolr()
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
95
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
96 x=sl.doGet("/diverse/de/Einst_Bemer_de_1907.xml",short=True)
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
97
cf4503528b5e searchsolr neue function, zun?chst nur f?r text-url-path
dwinter
parents:
diff changeset
98 print x.encode("utf-8")