From: <mrp...@us...> - 2011-06-29 21:34:56
|
Revision: 4819 http://bigdata.svn.sourceforge.net/bigdata/?rev=4819&view=rev Author: mrpersonick Date: 2011-06-29 21:34:49 +0000 (Wed, 29 Jun 2011) Log Message: ----------- added the ability to request the hit rank for full text search hits and sparql query bindings Modified Paths: -------------- branches/QUADS_QUERY_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/store/BD.java branches/QUADS_QUERY_BRANCH/bigdata-sails/src/java/com/bigdata/rdf/sail/BigdataEvaluationStrategyImpl3.java branches/QUADS_QUERY_BRANCH/bigdata-sails/src/java/com/bigdata/rdf/sail/FreeTextSearchExpander.java Modified: branches/QUADS_QUERY_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/store/BD.java =================================================================== --- branches/QUADS_QUERY_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/store/BD.java 2011-06-29 20:01:56 UTC (rev 4818) +++ branches/QUADS_QUERY_BRANCH/bigdata-rdf/src/java/com/bigdata/rdf/store/BD.java 2011-06-29 21:34:49 UTC (rev 4819) @@ -158,6 +158,22 @@ * <p> * <pre> * + * select ?s ?rank + * where { + * ?s bd:search "scale-out RDF triplestore" . + * ?s bd:rank ?rank . + * } + * + * </pre> + */ + final URI RANK = new URIImpl(SEARCH_NAMESPACE+"rank"); + + /** + * Magic predicate used to query for free text search metadata. Use + * in conjunction with {@link #SEARCH} as follows: + * <p> + * <pre> + * * select ?s * where { * ?s bd:search "scale-out RDF triplestore" . Modified: branches/QUADS_QUERY_BRANCH/bigdata-sails/src/java/com/bigdata/rdf/sail/BigdataEvaluationStrategyImpl3.java =================================================================== --- branches/QUADS_QUERY_BRANCH/bigdata-sails/src/java/com/bigdata/rdf/sail/BigdataEvaluationStrategyImpl3.java 2011-06-29 20:01:56 UTC (rev 4818) +++ branches/QUADS_QUERY_BRANCH/bigdata-sails/src/java/com/bigdata/rdf/sail/BigdataEvaluationStrategyImpl3.java 2011-06-29 21:34:49 UTC (rev 4819) @@ -774,6 +774,7 @@ final Value p = sp.getPredicateVar().getValue(); if (s == null && p != null && (BD.RELEVANCE.equals(p) || + BD.RANK.equals(p) || BD.MIN_RANK.equals(p) || BD.MAX_RANK.equals(p) || BD.MIN_RELEVANCE.equals(p) || @@ -1836,6 +1837,7 @@ com.bigdata.bop.Var.var(subjVar.getName()); IVariableOrConstant<IV> relevance = new Constant(DummyIV.INSTANCE); + IVariableOrConstant<IV> rank = new Constant(DummyIV.INSTANCE); Literal minRank = null; Literal maxRank = null; Literal minRelevance = null; @@ -1857,6 +1859,11 @@ throw new IllegalArgumentException("illegal metadata: " + meta); } relevance = com.bigdata.bop.Var.var(oVar.getName()); + } else if (BD.RANK.equals(pVal)) { + if (oVar.hasValue()) { + throw new IllegalArgumentException("illegal metadata: " + meta); + } + rank = com.bigdata.bop.Var.var(oVar.getName()); } else if (BD.MIN_RANK.equals(pVal)) { if (oVal == null || !(oVal instanceof Literal)) { throw new IllegalArgumentException("illegal metadata: " + meta); @@ -1893,7 +1900,7 @@ final BOp[] vars = new BOp[] { search, // s = searchVar relevance, // p = relevanceVar - new Constant(DummyIV.INSTANCE), // o = reserved + rank, // o = rankVar new Constant(DummyIV.INSTANCE), // c = reserved }; Modified: branches/QUADS_QUERY_BRANCH/bigdata-sails/src/java/com/bigdata/rdf/sail/FreeTextSearchExpander.java =================================================================== --- branches/QUADS_QUERY_BRANCH/bigdata-sails/src/java/com/bigdata/rdf/sail/FreeTextSearchExpander.java 2011-06-29 20:01:56 UTC (rev 4818) +++ branches/QUADS_QUERY_BRANCH/bigdata-sails/src/java/com/bigdata/rdf/sail/FreeTextSearchExpander.java 2011-06-29 21:34:49 UTC (rev 4819) @@ -17,6 +17,7 @@ import com.bigdata.rdf.internal.TermId; import com.bigdata.rdf.internal.VTE; import com.bigdata.rdf.internal.XSDDoubleIV; +import com.bigdata.rdf.internal.XSDIntIV; import com.bigdata.rdf.lexicon.ITextIndexer; import com.bigdata.rdf.model.BigdataValue; import com.bigdata.rdf.spo.ISPO; @@ -317,8 +318,8 @@ final ISPO[] spos = new ISPO[hits.length]; for (int i = 0; i < hits.length; i++) { final IV s = new TermId(VTE.LITERAL, hits[i].getDocId()); - final IV p = new XSDDoubleIV(hits[i].getCosine()); - final IV o = null; // reserved + final IV p = new XSDDoubleIV(hits[i].getCosine()); // cosine + final IV o = new XSDIntIV(hits[i].getRank()); // rank final IV c = null; // reserved spos[i] = new SPO(s, p, o, c); if (log.isInfoEnabled()) @@ -333,8 +334,8 @@ for (IHit hit : hits) { final IV s = new TermId(VTE.LITERAL, hit.getDocId()); if (s == boundVal) { - final IV p = new XSDDoubleIV(hit.getCosine()); - final IV o = null; // reserved + final IV p = new XSDDoubleIV(hit.getCosine()); // cosine + final IV o = new XSDIntIV(hit.getRank()); // rank final IV c = null; // reserved result = new ISPO[] { new SPO(s, p, o, c) }; break; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |