def test_make_labels(config):
    doc = {
        'id': 'xxxx',
        '_id': 'yyyy',
        'type': 'street',
        'name': 'rue des Lilas',
        'city': 'Paris',
        'postcode': '75010',
        'lat': '49.32545',
        'lon': '4.2565',
        'housenumbers': {
            '1 bis': {
                'lat': '48.325451',
                'lon': '2.25651'
            }
        }
    }
    process_documents(json.dumps(doc))
    result = Result(get_document('d|yyyy'))
    result.housenumber = '1 bis'  # Simulate match_housenumber
    make_labels(None, result)
    assert result.labels == [
        '1 bis rue des Lilas 75010 Paris', 'rue des Lilas 75010 Paris',
        '1 bis rue des Lilas 75010', 'rue des Lilas 75010',
        '1 bis rue des Lilas Paris', 'rue des Lilas Paris',
        '1 bis rue des Lilas', 'rue des Lilas'
    ]
def test_make_municipality_labels(config):
    doc = {
        'id': 'xxxx',
        '_id': 'yyyy',
        'type': 'municipality',
        'name': 'Lille',
        'city': 'Lille',
        'postcode': '59000',
        'lat': '49.32545',
        'lon': '4.2565',
    }
    process_documents(json.dumps(doc))
    result = Result(get_document('d|yyyy'))
    make_labels(None, result)
    assert result.labels == ['Lille 59000', '59000 Lille', 'Lille']
Beispiel #3
0
def index_documents(docs):
    pipe = DB.pipeline(transaction=False)
    for doc in docs:
        if not doc:
            continue
        if doc.get('_action') in ['delete', 'update']:
            key = keys.document_key(doc['_id']).encode()
            known_doc = get_document(key)
            if known_doc:
                deindex_document(known_doc)
        if doc.get('_action') in ['index', 'update', None]:
            index_document(pipe, doc)
        yield doc
    try:
        pipe.execute()
    except redis.RedisError as e:
        msg = 'Error while importing document:\n{}\n{}'.format(doc, str(e))
        raise ValueError(msg)
def test_index_housenumbers_use_processors(config):
    doc = {
        'id': 'xxxx',
        '_id': 'yyyy',
        'type': 'street',
        'name': 'rue des Lilas',
        'city': 'Paris',
        'lat': '49.32545',
        'lon': '4.2565',
        'housenumbers': {
            '1 bis': {
                'lat': '48.325451',
                'lon': '2.25651'
            }
        }
    }
    process_documents(json.dumps(doc))
    stored = get_document('d|yyyy')
    assert stored['housenumbers']['1b']['raw'] == '1 bis'
def test_index_housenumber_uses_housenumber_preprocessors():
    # By default it glues ordinal to number
    doc = {
        'id': 'xxxx',
        '_id': 'xxxx',
        'type': 'street',
        'name': 'rue des Lilas',
        'city': 'Paris',
        'lat': '49.32545',
        'lon': '4.2565',
        'housenumbers': {
            '1 bis': {
                'lat': '48.325451',
                'lon': '2.25651'
            }
        }
    }
    index_document(doc)
    saved = ds.get_document('d|xxxx')
    assert saved['housenumbers']['1bis'] == {
        'lat': '48.325451',
        'lon': '2.25651',
        'raw': '1 bis'
    }
Beispiel #6
0
def test_reindex_document_should_replace():
    index_document(doc)
    doc2 = doc.copy()
    doc2['name'] = 'Another name'
    index_document(doc2)
    assert get_document(b'd|yyyy')['name'] == 'Another name'
def test_make_labels_merged_cities(config):
    doc = {
        "_id":
        "53543a313139353538390000",
        "id":
        "53543a313139353538390000",
        "type":
        "street",
        "postcode":
        "49120",
        "hexacleStreet":
        "492812226P",
        "lat":
        "47.1469",
        "lon":
        "-0.75745",
        "context":
        "49, Maine-et-Loire, Pays de la Loire",
        "importance":
        1,
        "userLabel":
        "RUE PIERRE LEPOUREAU",
        "name":
        "RUE PIERRE LEPOUREAU",
        "housenumbers": {
            "2 BIS": {
                "hexacleNumber": "49281222UE",
                "lat": "47.1504",
                "lon": "-0.757414"
            }
        },
        "cityAfnorLabel":
        "CHEMILLE EN ANJOU",
        "userCityLabel":
        "ST GEORGES DES GARDES (CHEMILLE EN ANJOU)",
        "cityAliasAfnorLabel":
        "ST GEORGES DES GARDES",
        "city": [
            "ST GEORGES DES GARDES (CHEMILLE EN ANJOU)",
            "ST GEORGES DES GARDES", "CHEMILLE EN ANJOU",
            "SAINT GEORGES DES GARDES"
        ]
    }

    process_documents(json.dumps(doc))
    result = Result(get_document('d|53543a313139353538390000'))
    result.housenumber = '2 bis'  # Simulate match_housenumber
    make_labels(None, result)

    assert result.labels == [
        '2 bis RUE PIERRE LEPOUREAU 49120 ST GEORGES DES GARDES (CHEMILLE EN ANJOU)',
        'RUE PIERRE LEPOUREAU 49120 ST GEORGES DES GARDES (CHEMILLE EN ANJOU)',
        '2 bis RUE PIERRE LEPOUREAU ST GEORGES DES GARDES (CHEMILLE EN ANJOU)',
        'RUE PIERRE LEPOUREAU ST GEORGES DES GARDES (CHEMILLE EN ANJOU)',
        '2 bis RUE PIERRE LEPOUREAU 49120 SAINT GEORGES DES GARDES',
        '2 bis RUE PIERRE LEPOUREAU 49120 ST GEORGES DES GARDES',
        'RUE PIERRE LEPOUREAU 49120 SAINT GEORGES DES GARDES',
        '2 bis RUE PIERRE LEPOUREAU SAINT GEORGES DES GARDES',
        '2 bis RUE PIERRE LEPOUREAU 49120 CHEMILLE EN ANJOU',
        'RUE PIERRE LEPOUREAU 49120 ST GEORGES DES GARDES',
        '2 bis RUE PIERRE LEPOUREAU ST GEORGES DES GARDES',
        'RUE PIERRE LEPOUREAU SAINT GEORGES DES GARDES',
        'RUE PIERRE LEPOUREAU 49120 CHEMILLE EN ANJOU',
        '2 bis RUE PIERRE LEPOUREAU CHEMILLE EN ANJOU',
        'RUE PIERRE LEPOUREAU ST GEORGES DES GARDES',
        'RUE PIERRE LEPOUREAU CHEMILLE EN ANJOU',
        '2 bis RUE PIERRE LEPOUREAU 49120', 'RUE PIERRE LEPOUREAU 49120',
        '2 bis RUE PIERRE LEPOUREAU', 'RUE PIERRE LEPOUREAU'
    ]