Example #1
0
def _ownership_search(request):
    query = request.GET.get("q", "")

    fields_to_search = [
        "owner", "asset", "ownership_ground", "ownership_form", "share",
        "comment", "mortgage_charge", "mortgage_details",
        "mortgage_charge_subjects", "mortgage_holder", "mortgage_mortgagor",
        "mortgage_guarantor", "mortgage_other_persons"
    ]

    if query:
        ownerships = ElasticOwnership.search().query("multi_match",
                                                     query=query,
                                                     operator="and",
                                                     fields=fields_to_search)

        if ownerships.count() == 0:
            # PLAN B, PLAN B
            ownerships = ElasticOwnership.search().query(
                "multi_match",
                query=query,
                operator="or",
                minimum_should_match="2",
                fields=fields_to_search)
    else:
        ownerships = ElasticOwnership.search().query("match_all")

    return paginated_search(request, ownerships)
Example #2
0
    def handle(self, *args, **options):
        Index(ElasticAddress._doc_type.index).delete(ignore=404)
        ElasticAddress.init()

        es = connections.get_connection('default')
        es.indices.put_settings(
            index=ElasticAddress._doc_type.index,
            body={
                "number_of_replicas": 0,
                'index.max_result_window': 50000
            }
        )

        Address.objects.reindex()

        self.stdout.write(
            'Loaded {} addresses to persistence storage'.format(
                Address.objects.count()))

        ownership_idx.delete(ignore=404)
        ownership_idx.create()
        ElasticOwnership.init()
        Ownership.objects.select_related("prop__address").reindex()

        self.stdout.write(
            'Loaded {} ownerships to persistence storage'.format(
                Ownership.objects.count()))
Example #3
0
def _ownership_search(request):
    query = request.GET.get("q", "")

    fields_to_search = [
        "owner", "asset", "ownership_ground", "ownership_form", "share",
        "comment", "mortgage_charge", "mortgage_details",
        "mortgage_charge_subjects", "mortgage_holder", "mortgage_mortgagor",
        "mortgage_guarantor", "mortgage_other_persons"]

    if query:
        ownerships = ElasticOwnership.search().query(
            "multi_match", query=query, operator="and",
            fields=fields_to_search
        )

        if ownerships.count() == 0:
            # PLAN B, PLAN B
            ownerships = ElasticOwnership.search().query(
                "multi_match", query=query,
                operator="or",
                minimum_should_match="2",
                fields=fields_to_search
            )
    else:
        ownerships = ElasticOwnership.search().query("match_all")

    return paginated_search(request, ownerships)
Example #4
0
def _ownership_search(request):
    query = request.GET.get("q", "")

    if query:
        return paginated_search(request, ElasticOwnership.search().query(
            "match", _all={"query": query, "minimum_should_match": "2"}
        ))

    return paginated_search(
        request, ElasticOwnership.search().query("match_all"))
Example #5
0
    def handle(self, *args, **options):
        Index(ElasticAddress._doc_type.index).delete(ignore=404)

        ElasticAddress.init()
        Address.objects.reindex()

        self.stdout.write("Loaded {} addresses to persistence storage".format(Address.objects.count()))

        ElasticOwnership.init()
        Ownership.objects.select_related("prop__address").reindex()

        self.stdout.write("Loaded {} ownerships to persistence storage".format(Ownership.objects.count()))
Example #6
0
    def handle(self, *args, **options):
        Index(ElasticAddress._doc_type.index).delete(ignore=404)

        ElasticAddress.init()
        Address.objects.reindex()

        self.stdout.write('Loaded {} addresses to persistence storage'.format(
            Address.objects.count()))

        ElasticOwnership.init()
        Ownership.objects.select_related("prop__address").reindex()

        self.stdout.write('Loaded {} ownerships to persistence storage'.format(
            Ownership.objects.count()))
Example #7
0
    def assume(q, fuzziness):
        search = ElasticOwnership.search()\
            .source(['full_name_suggest', 'owner'])\
            .params(size=0)\
            .suggest(
                'name',
                q,
                completion={
                    'field': 'full_name_suggest',
                    'size': 10,
                    'fuzzy': {
                        'fuzziness': fuzziness,
                        'unicode_aware': True
                    }
                }
        )

        res = search.execute()

        if res.success():
            return list(
                set(val._source.owner
                    for val in res.suggest.name[0]['options']))
        else:
            return []
Example #8
0
    def assume(q, fuzziness):
        search = ElasticOwnership.search()\
            .suggest(
                'name',
                q,
                completion={
                    'field': 'full_name_suggest',
                    'size': 10,
                    'fuzzy': {
                        'fuzziness': fuzziness,
                        'unicode_aware': 1
                    }
                }
        )

        res = search.execute()

        if res.success():
            return [val['text'] for val in res.suggest['name'][0]['options']]
        else:
            []
Example #9
0
def suggest(request):
    search = ElasticOwnership.search()\
        .suggest(
            'name',
            request.GET.get('q', ''),
            completion={
                'field': 'full_name_suggest',
                'size': 10,
                'fuzzy': {
                    'fuzziness': 2,
                    'unicode_aware': 1
                }
            }
    )

    res = search.execute()

    if res.success():
        return JsonResponse(
            [val['text'] for val in res.suggest['name'][0]['options']],
            safe=False
        )
    else:
        return JsonResponse([], safe=False)