MCPcopy Create free account
hub / github.com/BaseXdb/basex / scan

Method scan

basex-core/src/main/java/org/basex/query/expr/ft/FTWords.java:220–262  ·  view source on GitHub ↗

Returns a scan-based index iterator. @param lexer lexer, including the queried value @param ftt full-text tokenizer @param data data reference @return node iterator @throws QueryException query exception

(final FTLexer lexer, final FTTokenizer ftt, final Data data)

Source from the content-addressed store, hash-verified

218 * @throws QueryException query exception
219 */
220 private FTIndexIterator scan(final FTLexer lexer, final FTTokenizer ftt, final Data data)
221 throws QueryException {
222
223 final FTLexer input = new FTLexer(ftOpt);
224 final FTTokens fttokens = ftt.cache(lexer.token());
225 return new FTIndexIterator() {
226 final int sz = data.meta.size;
227 int pre = -1, ps;
228
229 @Override
230 public int pre() {
231 return pre;
232 }
233 @Override
234 public boolean more() {
235 while(++pre < sz) {
236 if(data.kind(pre) != Data.TEXT) continue;
237 input.init(data.text(pre, true));
238 ftt.matches.reset(ps);
239 try {
240 if(contains(fttokens, input, ftt) != 0) return true;
241 } catch(final QueryException ex) {
242 // ignore exceptions
243 Util.debug(ex);
244 }
245 }
246 return false;
247 }
248 @Override
249 public FTMatches matches() {
250 return ftt.matches;
251 }
252 @Override
253 public void pos(final int p) {
254 ps = p;
255 }
256 @Override
257 public int size() {
258 // worst case
259 return Math.max(1, sz >>> 1);
260 }
261 };
262 }
263
264 /**
265 * Returns all tokens of the query input.

Callers 1

nextMethod · 0.95

Calls 2

cacheMethod · 0.65
tokenMethod · 0.65

Tested by

no test coverage detected