From: <br...@us...> - 2007-10-30 10:00:16
|
Revision: 6822 http://exist.svn.sourceforge.net/exist/?rev=6822&view=rev Author: brihaye Date: 2007-10-30 03:00:14 -0700 (Tue, 30 Oct 2007) Log Message: ----------- introduced hints in search methods Modified Paths: -------------- branches/meshram/eXist/extensions/indexes/fulltext/src/org/exist/indexing/fulltext/FTIndexWorker.java branches/meshram/eXist/extensions/indexes/fulltext/src/org/exist/xquery/modules/fulltext/FuzzyMatchAll.java branches/meshram/eXist/extensions/indexes/fulltext/src/org/exist/xquery/modules/fulltext/MatchRegexp.java Modified: branches/meshram/eXist/extensions/indexes/fulltext/src/org/exist/indexing/fulltext/FTIndexWorker.java =================================================================== --- branches/meshram/eXist/extensions/indexes/fulltext/src/org/exist/indexing/fulltext/FTIndexWorker.java 2007-10-30 08:56:25 UTC (rev 6821) +++ branches/meshram/eXist/extensions/indexes/fulltext/src/org/exist/indexing/fulltext/FTIndexWorker.java 2007-10-30 10:00:14 UTC (rev 6822) @@ -501,7 +501,15 @@ } public NodeSet getNodes(XQueryContext context, int contextId, DocumentSet docs, NodeSet contextSet, int axis, QName qname, - TermMatcher matcher, CharSequence startTerm) throws TerminatedException { + Map hints) throws TerminatedException { + //TODO : use this key + List qnames = hints == null ? null : (List)hints.get(QNAMES_KEY); + //Expects a StringValue + Object start = hints == null ? null : hints.get(START_VALUE); + //Expects a StringValue + //TODO : possibly use this key ? + Object end = hints == null ? null : hints.get(END_VALUE); + TermMatcher matcher = hints == null ? null : (TermMatcher)hints.get(TOKEN_MATCHER); if (LOG.isTraceEnabled() && qname != null) LOG.trace("Index lookup by QName: " + qname); final NodeSet result = new ExtArrayNodeSet(); @@ -511,13 +519,13 @@ final int collectionId = ((Collection) iter.next()).getId(); //Compute a key for the token Value value; - if (startTerm != null && startTerm.length() > 0) { + if (start != null && ((String)start).length() > 0) { //TODO : case conversion should be handled by the tokenizer -pb if (qname == null) { //See above for the problems it may raise... - value = new FTGenericTokenKey(collectionId, startTerm.toString().toLowerCase()); + value = new FTGenericTokenKey(collectionId, (String)start); } else { - value = new FTQNamedTokenKey(collectionId, qname, context.getBroker().getSymbols(), startTerm.toString().toLowerCase()); + value = new FTQNamedTokenKey(collectionId, qname, context.getBroker().getSymbols(), (String)start); } } else { if (qname == null) { Modified: branches/meshram/eXist/extensions/indexes/fulltext/src/org/exist/xquery/modules/fulltext/FuzzyMatchAll.java =================================================================== --- branches/meshram/eXist/extensions/indexes/fulltext/src/org/exist/xquery/modules/fulltext/FuzzyMatchAll.java 2007-10-30 08:56:25 UTC (rev 6821) +++ branches/meshram/eXist/extensions/indexes/fulltext/src/org/exist/xquery/modules/fulltext/FuzzyMatchAll.java 2007-10-30 10:00:14 UTC (rev 6822) @@ -22,7 +22,9 @@ */ package org.exist.xquery.modules.fulltext; +import java.util.HashMap; import java.util.List; +import java.util.Map; import org.exist.dom.NodeSet; import org.exist.dom.QName; @@ -86,13 +88,16 @@ if(term.length() == 0) hits[k] = null; else { + Map hints = new HashMap(); matcher = new FuzzyMatcher(term, threshold); + hints.put(FTIndexWorker.TOKEN_MATCHER, matcher); + hints.put(FTIndexWorker.START_VALUE, term.substring(0, 1).toLowerCase()); hits[k] = index.getNodes( context, contextId, nodes.getDocumentSet(), nodes, NodeSet.ANCESTOR, null, - matcher, term.substring(0, 1)); + hints); } } return mergeResults(hits); Modified: branches/meshram/eXist/extensions/indexes/fulltext/src/org/exist/xquery/modules/fulltext/MatchRegexp.java =================================================================== --- branches/meshram/eXist/extensions/indexes/fulltext/src/org/exist/xquery/modules/fulltext/MatchRegexp.java 2007-10-30 08:56:25 UTC (rev 6821) +++ branches/meshram/eXist/extensions/indexes/fulltext/src/org/exist/xquery/modules/fulltext/MatchRegexp.java 2007-10-30 10:00:14 UTC (rev 6822) @@ -22,8 +22,10 @@ package org.exist.xquery.modules.fulltext; import java.util.ArrayList; +import java.util.HashMap; import java.util.Iterator; import java.util.List; +import java.util.Map; import java.util.regex.Pattern; import org.exist.EXistException; @@ -421,10 +423,13 @@ } start = buf; } - try { + try { + Map hints = new HashMap(); TermMatcher matcher = new RegexMatcher(token, matchType, Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE, - matchAll); - hits[k] = index.getNodes(context, contextId, docs, contextSet, axis, qname, matcher, start); + matchAll); + hints.put(FTIndexWorker.TOKEN_MATCHER, matcher); + hints.put(FTIndexWorker.START_VALUE, start); + hits[k] = index.getNodes(context, contextId, docs, contextSet, axis, qname, hints); } catch (EXistException e) { throw new XPathException(e); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |