Skip to content
Snippets Groups Projects
Commit 4f531225 authored by Patrick Jentsch's avatar Patrick Jentsch
Browse files

Use CQiClient for testing purpose.

parent 0d441a93
No related branches found
No related tags found
No related merge requests found
......@@ -3,7 +3,8 @@ from app.events import connected_sessions
from app.models import Corpus
from flask import current_app, request
from flask_login import current_user, login_required
from .CQiWrapper.CQiWrapper import CQiWrapper
from .CQiWrapper.CQiClient import CQiClient
from .CQiWrapper.CQi import CONST_FIELD_MATCH, CONST_FIELD_MATCHEND
'''
......@@ -40,17 +41,32 @@ def init_corpus_analysis(corpus_id):
def recv_query(message):
logger.warning(message)
analysis_client = analysis_clients[request.sid]
corpus_name = 'CORPUS'
result_subcorpus_name = 'Query-results' # should be set by the user somehow
query = message['query']
analysis_client.set_corpus_name(corpus_name)
analysis_client.create_attribute_strings()
analysis_client.query_subcorpus(result_subcorpus_name, query)
logger.warning('Vorher')
#results = analysis_client.show_results()
results = analysis_client.get_cpos_info([1995, 2000], analysis_client)
logger.warning('Nacher')
logger.warning('Query results: {}'.format(str(results)))
""" Prepare and execute a query """
corpus = 'CORPUS'
query = '"and";'
query_subcorpus = 'Results'
analysis_client.cqp_query(corpus, query_subcorpus, query)
""" Evaluate query results """
match_corpus = '{}:{}'.format(corpus, query_subcorpus)
match_num = analysis_client.cqp_subcorpus_size(match_corpus)
match_num = min(19, match_num)
if match_num == 0:
print('No matches found.')
exit()
if not analysis_client.cqp_subcorpus_has_field(match_corpus, CONST_FIELD_MATCH):
print('Error.')
exit()
if not analysis_client.cqp_subcorpus_has_field(match_corpus, CONST_FIELD_MATCHEND):
print('Error')
exit()
match_boundaries = zip(analysis_client.cqp_dump_subcorpus(match_corpus, CONST_FIELD_MATCH, 0, match_num - 1),
analysis_client.cqp_dump_subcorpus(match_corpus, CONST_FIELD_MATCHEND, 0, match_num - 1))
matches = []
for match_start, match_end in match_boundaries:
tokens = analysis_client.cl_cpos2str('{}.word'.format(corpus), range(match_start, match_end + 1))
pos = analysis_client.cl_cpos2str('{}.pos'.format(corpus), range(match_start, match_end + 1))
matches.append({'tokens': tokens, 'pos': pos})
logger.warning(matches)
def observe_corpus_analysis_connection(app, corpus_id, session_id):
......@@ -59,10 +75,8 @@ def observe_corpus_analysis_connection(app, corpus_id, session_id):
while corpus.status != 'analysing':
db.session.refresh(corpus)
socketio.sleep(3)
analysis_client = CQiWrapper(host='{}_analysis_container{}'.format(corpus.creator.username, corpus.id),
password='opaque', port=4877,
username='opaque')
analysis_client.connect()
analysis_client = CQiClient(host='{}_analysis_container{}'.format(corpus.creator.username, corpus.id), port=4877)
analysis_client.ctrl_connect('opaque', 'opaque')
analysis_clients[session_id] = analysis_client
socketio.emit('init_corpus_analysis', 'Ready', room=session_id)
while session_id in connected_sessions:
......@@ -76,7 +90,7 @@ def observe_corpus_analysis_connection(app, corpus_id, session_id):
socketio.sleep(3)
'''
socketio.sleep(3)
analysis_client.disconnect()
analysis_client.ctrl_bye()
analysis_clients.pop(session_id, None)
analysis_sessions[str(corpus_id)].remove(session_id)
if not analysis_sessions[str(corpus_id)]:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment