Skip to content
Snippets Groups Projects
SearchEngine.py 1.83 KiB
from flask import Flask, jsonify, Response, send_file, request
#from flask_cors import CORS
from Search import Search
from SearchResult import SearchResult
from CommonUtilities import CommonUtilities
from logging import Formatter, FileHandler
import json
import logging

app = Flask(__name__)
#CORS(app)
logger = None

@app.route('/')
def index():
    return send_file('index.html')

@app.route('/search/', methods=['GET', 'POST'])
def get_results():
    global search
    json_data = request.get_data(as_text=True)
    data = json.loads(json_data)
    print(data)
    query = data['query']
    results = Search.getResultDocs(query)
    queryResult = list()
    maxResultCount = int(data['page_count']) * 10
    for result in results[maxResultCount - 10 : maxResultCount]:
        queryResult.append(SearchResult(result, query))
    response = Response(response=json.dumps(queryResult, default=CommonUtilities.obj_dict), status=200, mimetype='application/json')
    #response.headers.add('Access-Control-Allow-Origin', '*')
    return response

@app.route('/relevance/', methods=["POST"])
def relevance():
    json_data = request.get_data(as_text=True)
    data = json.loads(json_data)
    # logger.info(json_data)
    with open("Relevance.json", "a") as relevanceJson:
        relevanceJson.write(json_data + "\n")
        relevanceJson.close()
    response = Response(response=json.dumps("OK", default=CommonUtilities.obj_dict), status=200, mimetype='application/json')
    return response

def setLogger():
    global logger
    logger = logging.getLogger('relevance')
    logger.setLevel(logging.INFO)
    ch = logging.FileHandler('Relevance.json')
    ch.setLevel(logging.INFO)
    formatter = logging.Formatter('%(message)s')
    ch.setFormatter(formatter)
    logger.addHandler(ch)

if __name__ == '__main__':
    search = Search()
    setLogger()
    app.run(debug=True)