| core = 'all' | core = 'all' | ||||
| if sort is None: | if sort is None: | ||||
| sort = 'relevance' | sort = 'relevance' | ||||
| search_results = solr.country_search(core, sort, country_code) | |||||
| field = 'country' | |||||
| search_results = solr.term_search(core, sort, field, country_code) | |||||
| results = search_results[0] | results = search_results[0] | ||||
| num_found = search_results[1] | num_found = search_results[1] | ||||
| total_number = solr.get_total_number(core) | total_number = solr.get_total_number(core) | ||||
| return render_template('search.html', results=results, num_found=num_found, total_number=total_number, country_code=country_code, core=core, sort=sort) | return render_template('search.html', results=results, num_found=num_found, total_number=total_number, country_code=country_code, core=core, sort=sort) | ||||
| # route for year search page | |||||
| @search.route('/search/year/', methods=['GET', 'POST']) | |||||
| def year_search(): | |||||
| if request.method == 'POST': | |||||
| year = request.form.get('year') | |||||
| core = request.form.get('core') | |||||
| sort = request.form.get('sort') | |||||
| else: | |||||
| year = request.args.get('year') | |||||
| core = request.args.get('core') | |||||
| sort = request.args.get('sort') | |||||
| if year is None: | |||||
| return redirect(url_for('main.index')) | |||||
| if core is None: | |||||
| core = 'all' | |||||
| if sort is None: | |||||
| sort = 'relevance' | |||||
| field = 'year' | |||||
| search_results = solr.term_search(core, sort, field, year) | |||||
| results = search_results[0] | |||||
| num_found = search_results[1] | |||||
| total_number = solr.get_total_number(core) | |||||
| return render_template('search.html', results=results, num_found=num_found, total_number=total_number, year=year, core=core, sort=sort) |
| output.append(result_output) | output.append(result_output) | ||||
| return output, num_found | return output, num_found | ||||
| def country_search(core, sort, country_code): | |||||
| def term_search(core, sort, field, input): | |||||
| # Assemble a query string to send to Solr. This uses the Solr hostname from config.env. Solr's query syntax can be found at many sites including https://lucene.apache.org/solr/guide/6_6/the-standard-query-parser.html | # Assemble a query string to send to Solr. This uses the Solr hostname from config.env. Solr's query syntax can be found at many sites including https://lucene.apache.org/solr/guide/6_6/the-standard-query-parser.html | ||||
| if (sort == 'relevance'): | if (sort == 'relevance'): | ||||
| solrurl = 'http://' + solr_hostname + ':' + solr_port + '/solr/' + core + '/select?q.op=OR&q=%7B!term%20f%3Dcountry%7D' + country_code + '&wt=json' | |||||
| solrurl = 'http://' + solr_hostname + ':' + solr_port + '/solr/' + core + '/select?q.op=OR&q=%7B!term%20f%3D' + field + '%7D' + input + '&wt=json' | |||||
| else: | else: | ||||
| solrurl = 'http://' + solr_hostname + ':' + solr_port + '/solr/' + core + '/select?q.op=OR&q=%7B!term%20f%3Dcountry%7D' + country_code + '&wt=json&sort=' + sort | |||||
| solrurl = 'http://' + solr_hostname + ':' + solr_port + '/solr/' + core + '/select?q.op=OR&q=%7B!term%20f%3D' + field + '%7D' + input + '&wt=json&sort=' + sort | |||||
| # get result | # get result | ||||
| request = requests.get(solrurl) | request = requests.get(solrurl) |
| {% if i % 2 %} | {% if i % 2 %} | ||||
| {{ year_data[i] }}<br> | {{ year_data[i] }}<br> | ||||
| {% else %} | {% else %} | ||||
| {{ year_data[i] }}: | |||||
| <a href="{{ url_for('search.year_search', year=year_data[i]) }}"> | |||||
| {{ year_data[i] }}: | |||||
| </a> | |||||
| {% endif %} | {% endif %} | ||||
| {% endfor %} | {% endfor %} | ||||
| </div> | </div> |
| {% elif country_code is defined %} | {% elif country_code is defined %} | ||||
| <form action="{{ url_for('search.country_search') }}" method="POST"> | <form action="{{ url_for('search.country_search') }}" method="POST"> | ||||
| <input type="hidden" name="country_code" value="{{ country_code }}"> | <input type="hidden" name="country_code" value="{{ country_code }}"> | ||||
| {% elif year is defined %} | |||||
| <form action="{{ url_for('search.year_search') }}" method="POST"> | |||||
| <input type="hidden" name="year" value="{{ year }}"> | |||||
| {% endif %} | {% endif %} | ||||
| <input type="hidden" name="searchopt" value="{{ core }}"> | <input type="hidden" name="searchopt" value="{{ core }}"> | ||||
| sort by: | sort by: |