示例#1
0
文件: query.py 项目: butilities/aleph
 def get_text_query(self):
     query = []
     if self.parser.text:
         qs = query_string_query(self.TEXT_FIELDS, self.parser.text)
         query.append(qs)
     if self.parser.prefix:
         query.append({
             "match_phrase_prefix": {
                 self.PREFIX_FIELD: self.parser.prefix
             }
         })
     if not len(query):
         query.append({"match_all": {}})
     return query
示例#2
0
 def get_highlight(self):
     if not self.parser.highlight:
         return {}
     query = query_string_query(self.HIGHLIGHT_FIELD, self.parser.text)
     return {
         "encoder": "html",
         "fields": {
             self.HIGHLIGHT_FIELD: {
                 "highlight_query": query,
                 "require_field_match": False,
                 "number_of_fragments": self.parser.highlight_count,
                 "fragment_size": self.parser.highlight_length,
             }
         },
     }
示例#3
0
文件: alerts.py 项目: sunu/aleph
def alert_query(alert, authz):
    """Construct a search query to find new matching entities and documents
    for a particular alert. Update handling is done via a timestamp of the
    latest known result."""
    # Many users have bookmarked complex queries, otherwise we'd use a
    # precise match query.
    filters = [authz_query(authz)]
    if alert.notified_at is not None:
        notified_at = alert.notified_at.isoformat()
        filters.append({"range": {"updated_at": {"gt": notified_at}}})
    return {
        "size": 50,
        "_source": {
            "includes": ["collection_id"]
        },
        "query": {
            "bool": {
                "should": [query_string_query("text", alert.query)],
                "filter": filters,
                "minimum_should_match": 1,
            }
        },
    }