def similar_get(id, body):
    """Returns the set of items ordered by similarity, compared to the given query item
    :param id: 
    :type id: str
    :param body: 
    :type body: dict | bytes
    :rtype: ResultItemSet
    """
    try:
        vectorizer = TfidfVectorizer(tokenizer=normalize, stop_words='english')
        if connexion.request.is_json:
            data = {}
            input_item = Item(id=id, name='', similarity=0)
            results = []
            item_set = ItemSet.from_dict(connexion.request.get_json())
            for i in item_set.data:
                if i.id != id:
                    data[i.id] = i.name
                else:
                    input_item.name = i.name
            for item in data:
                results.append(
                    (Item(id=item, name=data[item], similarity=cosine_sim(input_item.name, data[item], vectorizer))))
            item_set.data = sorted(results, key=lambda it: (it.similarity), reverse=True)
    except Exception as e:
        logger.warning(e, connexion.request)

    return item_set
예제 #2
0
def test_dict(mock_session):
    item = Item()
    item.name = 'x'
    item.catagory_id = 2
    item.description = 'z'
    assert item.dict == {
        'id': None,
        'catagory_id': 2,
        'name': 'x',
        'description': 'z'
    }
예제 #3
0
def test_update_item_with_name_updates_name(mock_session):
    item = Item()
    item.name = 'a'
    item.update(name='b')
    assert item.name == 'b'