Mercurial > hg > purlService
annotate searchService/searchSolr.py @ 40:671dd1e4bd09 default tip
minor bug
author | dwinter |
---|---|
date | Wed, 05 Mar 2014 10:20:54 +0100 |
parents | 9ef155b1eec5 |
children |
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 | 15 SOLR_SERVER="https://md.mpiwg-berlin.mpg.de/solr" |
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 | 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 | 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 | 74 if not key.startswith("_"): |
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 | 82 web.header('Content-Type', 'text/xml') |
83 web.header('Access-Control-Allow-Origin', '*') | |
84 web.header('Access-Control-Allow-Credentials', 'true') | |
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") |