示例#1
0
def build_query_from_request(request):
    return {
        'query': {
            'function_score': {
                'query': {'bool': {
                    'filter': {'term': {'is_stub': False}},
                }},
                'functions': get_default_score_functions()
            }
        }
    }
示例#2
0
def build_query_from_request(request, location=None, place=None, parent=None,
                             date=None, include_past=False):
    filters = []

    if location:
        filters.append({'term': {'location': location}})

    if place:
        filters.append({'term': {'place': place}})

    if parent:
        filters.append({'term': {'parent': parent}})

    if date:
        date_value = '{}||/d'.format(date.isoformat())
        filters.append({'nested': {
            'path': 'dates',
            'query': {
                'bool': {
                    'filter': [
                        {'range': {'dates.start': {'lte': date_value}}},
                        {'range': {'dates.end': {'gte': date_value}}}
                    ]
                }
            }
        }})
    elif not include_past:
        now = datetime.now().isoformat()
        filters.append({'range': {'end': {'gte': now}}})

    return {
        'query': {
            'function_score': {
                'query': {'bool': {
                    'filter': filters,
                    'should': [
                        {'term': {'kind': 'theater'}},
                        {'term': {'is_for_kids': False}},
                    ]
                }},
                'functions': get_default_score_functions()
            }
        }
    }
示例#3
0
def build_query_from_request(request, location=None):
    filters = [
        {'term': {'is_stub': False}}
    ]

    if location:
        filters.append({'term': {'location': location}})

    return {
        'query': {
            'function_score': {
                'query': {'bool': {
                    'filter': filters,
                    'should': [
                        {'term': {'kind': 'theater'}},
                        {'term': {'is_for_kids': False}},
                    ],
                }},
                'functions': get_default_score_functions()
            }
        }
    }
示例#4
0
def build_query_from_request(request,
                             location=None,
                             place=None,
                             parent=None,
                             date=None,
                             include_past=False):
    filters = []

    if location:
        filters.append({'term': {'location': location}})

    if place:
        filters.append({'term': {'place': place}})

    if parent:
        filters.append({'term': {'parent': parent}})

    if date:
        date_value = '{}||/d'.format(date.isoformat())
        filters.append({
            'nested': {
                'path': 'dates',
                'query': {
                    'bool': {
                        'filter': [{
                            'range': {
                                'dates.start': {
                                    'lte': date_value
                                }
                            }
                        }, {
                            'range': {
                                'dates.end': {
                                    'gte': date_value
                                }
                            }
                        }]
                    }
                }
            }
        })
    elif not include_past:
        now = datetime.now().isoformat()
        filters.append({'range': {'end': {'gte': now}}})

    return {
        'query': {
            'function_score': {
                'query': {
                    'bool': {
                        'filter':
                        filters,
                        'should': [
                            {
                                'term': {
                                    'kind': 'theater'
                                }
                            },
                            {
                                'term': {
                                    'is_for_kids': False
                                }
                            },
                        ]
                    }
                },
                'functions': get_default_score_functions()
            }
        }
    }
示例#5
0
def build_query_from_request(request, q, location=None, include_past=False):
    filters = [{
        'bool': {
            'should': [
                {
                    'term': {
                        'is_stub': False
                    }
                },
                {
                    'missing': {
                        'field': 'is_stub'
                    }
                },
            ]
        }
    }]

    if location:
        filters.append({'term': {'location': location}})

    if not include_past:
        now = datetime.now().isoformat()
        filters.append({
            'bool': {
                'should': [{
                    'range': {
                        'end': {
                            'gte': now
                        }
                    }
                }, {
                    'missing': {
                        'field': 'end'
                    }
                }]
            }
        })

    return {
        'query': {
            'function_score': {
                'query': {
                    'bool': {
                        'must': [
                            {
                                'multi_match': {
                                    'query':
                                    q,
                                    'type':
                                    'phrase',
                                    'fields': [
                                        'name.ngram', 'name.text',
                                        'full_name.ngram', 'full_name.text'
                                    ],
                                    'slop':
                                    50
                                }
                            },
                        ],
                        'filter':
                        filters,
                        'should': [
                            {
                                'term': {
                                    '_type': 'place'
                                }
                            },
                            {
                                'term': {
                                    'is_for_kids': False
                                }
                            },
                        ],
                    }
                },
                'functions': get_default_score_functions()
            }
        },
        'highlight': {
            'fields': {
                'name.ngram': {},
                'name.text': {},
                'full_name.text': {},
                'full_name.ngram': {},
            }
        }
    }
示例#6
0
def build_query_from_request(request, q, location=None, include_past=False):
    filters = [
        {
            'bool': {
                'should': [
                    {'term': {'is_stub': False}},
                    {'missing': {'field': 'is_stub'}},
                ]
            }
        }
    ]

    if location:
        filters.append({'term': {'location': location}})

    if not include_past:
        now = datetime.now().isoformat()
        filters.append({
            'bool': {
                'should': [
                    {'range': {'end': {'gte': now}}},
                    {'missing': {'field': 'end'}}
                ]
            }
        })

    return {
        'query': {
            'function_score': {
                'query': {'bool': {
                    'must': [
                        {'multi_match': {
                            'query': q,
                            'type': 'phrase',
                            'fields': [
                                'name.ngram',
                                'name.text',
                                'full_name.ngram',
                                'full_name.text'
                            ],
                            'slop': 50
                        }},
                    ],
                    'filter': filters,
                    'should': [
                        {'term': {'_type': 'place'}},
                        {'term': {'is_for_kids': False}},
                    ],
                }},
                'functions': get_default_score_functions()
            }
        },
        'highlight': {
            'fields': {
                'name.ngram': {},
                'name.text': {},
                'full_name.text': {},
                'full_name.ngram': {},
            }
        }
    }