Lines Matching +full:join +full:- +full:group -(+path:inc +path:lang) -(+path:lib +path:plugins +path:lang) -(+path:lib +path:tpl +path:dokuwiki +path:lang)

74     $lookup = $Indexer->lookup($q['words']);
78 foreach ($Indexer->getPages() as $id) {
87 case 'W-:':
95 case 'P-:': // phrase
109 if ($evt->advise_before() && $evt->result !== true) {
112 $evt->result = true;
115 $evt->advise_after();
116 if ($evt->result === true) {
123 case 'N-:': // namespace
134 $pages = array_splice($stack, -2);
141 $pages = array_splice($stack, -2);
183 * @param bool $ignore_perms Ignore the fact that pages are hidden or read-protected
188 $result = idx_get_indexer()->lookupKey('relation_references', $id);
212 * Note that before 2013-07-31 the second parameter was the maximum number of results and
222 $result = idx_get_indexer()->lookupKey('relation_media', $id);
302 $page_idx = $Indexer->getPages();
313 foreach ($Indexer->lookupKey('title', $id, '_ft_pageLookupTitleCompare') as $p_id) {
419 return -1;
438 return $mtimeB - $mtimeA;
455 // remove soft-hyphens
464 if ($evt->advise_before()) {
488 for ($cnt = 4; $cnt--;) {
506 $pre = min($utf8_idx - $utf8_offset, 100);
507 $post = min($len - $utf8_idx - $utf8_len, 100);
513 $pre = min($pre, 100 - $post);
515 $post = min($post, 100 - $pre);
518 // make it so and break out of this loop - there is no need for the
526 $start = $utf8_idx - $pre;
531 $snippets[count($snippets) - 1] .= PhpString::substr($text, $append, $end - $append);
533 $snippets[] = PhpString::substr($text, $start, $end - $start);
556 $evt->advise_after();
591 $term = substr($term, 0, -2);
705 * -exclude
708 * -"phrase you want to exclude"
711 * ^exclude:namespace (or -ns:exclude:namespace)
714 * -()
721 * this query is equivalent to [ -(-aa or -"bb cc" or -ns:dd:ee) ]
726 * ( ) - group
727 * AND - logical and
728 * OR - logical or
729 * NOT - logical not
730 * W+:, W-:, W_: - word (underscore: no need to highlight)
731 * P+:, P-: - phrase (minus sign: logically in NOT group)
732 * N+:, N-: - namespace
737 '/(-?".*?")/u',
739 -1,
745 if (preg_match('/^(-?)"(.+)"$/u', $term, $matches)) {
746 // phrase-include and phrase-exclude
756 $term = str_replace('- (', ' -(', $term);
770 // parenthesis-include-open
773 } elseif ($token === '-(') {
774 // parenthesis-exclude-open
778 // parenthesis-any-close
781 $parens_level--;
783 // logical-and (do nothing)
785 // logical-or
787 } elseif (preg_match('/^(?:\^|-ns:)(.+)$/u', $token, $matches)) {
788 // namespace-exclude
791 // namespace-include
793 } elseif (preg_match('/^-(.+)$/', $token, $matches)) {
794 // word-exclude
797 // word-include
821 $tokens = preg_split('/(NOT\(|[()])/u', $parsed_query, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
828 if ($parens_level-- === end($notgrp_levels)) array_pop($notgrp_levels);
830 // turn highlight-flag off if terms are logically in "NOT" group
831 $token = preg_replace('/([WPN])\+\:/u', '$1-:', $token);
839 * by Shunting-yard algorithm
842 * see: http://en.wikipedia.org/wiki/Shunting-yard_algorithm
849 $tokens = preg_split($ope_regex, $parsed_query, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY);
874 if ($parsed_ary[$i] === 'NOT' && $parsed_ary[$i - 1] === 'NOT') {
875 unset($parsed_ary[$i], $parsed_ary[$i - 1]);
894 case 'N-:':
900 case 'W-:':
909 case 'P-:':
950 $words = $Indexer->tokenizer($term_noparen, true);
982 $query .= ' -' . implode(' -', $not);