on master help sign in
Improving Wolfram Alpha search hit content

Making WA search hits contain - the (parsed) input inside the "title" instead of just "Wolfram|Alpha", to better match other hit titles and to confirm correct parsing of input to the user - the first output field that contains any text (skipping ones that are only pictures; this is usually the most meaningful "result" field) instead of the raw input as the "content", making it additionally possible to obtain WA computations from JSON API calls

commita8907224a1c433b1227fd707e9bb2524dd405109 authorLorenzo J. Lucchini <LuccoJ@users.noreply.github.com> dateThu 7 Jul 2016, 00:33 (10 years ago) parent09ee2aa
1 file changed+9−7
searx/engines/wolframalpha_api.py+9−7
searx/engines/wolframalpha_api.py+9−7
@@ -18,7 +18,6 @@ api_key = '' # defined in settings.yml
1818
1919# xpath variables
2020failure_xpath = '/queryresult[attribute::success="false"]'
21−answer_xpath = '//pod[attribute::primary="true"]/subpod/plaintext'
2221input_xpath = '//pod[starts-with(attribute::id, "Input")]/subpod/plaintext'
2322pods_xpath = '//pod'
2423subpods_xpath = './subpod'
@@ -76,11 +75,11 @@ def response(resp):
7675 try:
7776 infobox_title = search_results.xpath(input_xpath)[0].text
7877 except:
79− infobox_title = None
78+ infobox_title = ""
8079
8180 pods = search_results.xpath(pods_xpath)
82− result = ""
8381 result_chunks = []
82+ result_content = ""
8483 for pod in pods:
8584 pod_id = pod.xpath(pod_id_xpath)[0]
8685 pod_title = pod.xpath(pod_title_xpath)[0]
@@ -97,8 +96,9 @@ def response(resp):
9796
9897 if content and pod_id not in image_pods:
9998
100− if pod_is_result:
101− result = content
99+ if pod_is_result or not result_content:
100+ if pod_id != "Input":
101+ result_content = "%s: %s" % (pod_title, content)
102102
103103 # if no input pod was found, title is first plaintext pod
104104 if not infobox_title:
@@ -115,6 +115,8 @@ def response(resp):
115115 if not result_chunks:
116116 return []
117117
118+ title = "Wolfram|Alpha (%s)" % infobox_title
119+
118120 # append infobox
119121 results.append({'infobox': infobox_title,
120122 'attributes': result_chunks,
@@ -122,7 +124,7 @@ def response(resp):
122124
123125 # append link to site
124126 results.append({'url': resp.request.headers['Referer'].decode('utf8'),
125− 'title': infobox_title + ' - Wolfram|Alpha',
126− 'content': result})
127+ 'title': title,
128+ 'content': result_content})
127129
128130 return results