def _path_trigram_filter(path, is_case_sensitive): """Return an ES filter clause that returns docs whose paths match the given path all the way to their ends. If a given path starts with a /, the user is explicitly requesting a match starting at the root level. """ if path.startswith('/'): path = path[1:] # Leading slashes aren't stored in the index. regex = '^{0}$' # Insist it start at the beginning. else: regex = '(/|^){0}$' # Start at any path segment. return es_regex_filter( regex_grammar.parse( regex.format( re.escape( path.encode('ascii', 'backslashreplace') ) ) ), 'path', is_case_sensitive )
def filter(self): glob = self._term["arg"] try: return es_regex_filter( regex_grammar.parse(glob_to_regex(glob)), "path", is_case_sensitive=self._term["case_sensitive"] ) except NoTrigrams: raise BadTerm("Path globs need at least 3 literal characters in a row " "for speed.")
def filter(self): try: return es_regex_filter( self._parsed_regex, 'content', is_case_sensitive=self._term['case_sensitive']) except NoTrigrams: raise BadTerm('Regexes need at least 3 literal characters in a ' 'row for speed.')
def filter(self): glob = self._term['arg'] try: return es_regex_filter( regex_grammar.parse(glob_to_regex(glob)), 'path', is_case_sensitive=self._term['case_sensitive']) except NoTrigrams: raise BadTerm('Path globs need at least 3 literal characters in a row ' 'for speed.')
def _regex_filter(self, path_seg_property_name, no_trigrams_error_text): """Return an ES regex filter that matches this filter's glob against the path segment at path_seg_property_name. """ glob = self._term['arg'] try: return es_regex_filter( regex_grammar.parse(glob_to_regex(glob)), path_seg_property_name, is_case_sensitive=self._term['case_sensitive']) except NoTrigrams: raise BadTerm(no_trigrams_error_text)
def _path_trigram_filter(path, is_case_sensitive): """Return an ES filter clause that returns docs whose paths match the given path all the way to their ends. If a given path starts with a /, the user is explicitly requesting a match starting at the root level. """ if path.startswith('/'): path = path[1:] # Leading slashes aren't stored in the index. regex = '^{0}$' # Insist it start at the beginning. else: regex = '(/|^){0}$' # Start at any path segment. return es_regex_filter(regex_grammar.parse(regex.format(re.escape(path))), 'path', is_case_sensitive)
def filter(self): try: return es_regex_filter(self._parsed_regex, "content", is_case_sensitive=self._term["case_sensitive"]) except NoTrigrams: raise BadTerm("Regexes need at least 3 literal characters in a " "row for speed.")