You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by rm...@apache.org on 2011/08/23 16:07:19 UTC
svn commit: r1160700 [4/22] - in /lucene/dev/branches/flexscoring: ./
dev-tools/eclipse/ dev-tools/idea/.idea/ dev-tools/idea/lucene/contrib/
dev-tools/idea/lucene/contrib/demo/
dev-tools/idea/lucene/contrib/highlighter/ dev-tools/idea/lucene/contrib/q...
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/FilteredQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/FilteredQueryBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/FilteredQueryBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/FilteredQueryBuilder.java Tue Aug 23 14:06:58 2011
@@ -30,35 +30,34 @@ import org.w3c.dom.Element;
*/
/**
- *
+ *
*/
public class FilteredQueryBuilder implements QueryBuilder {
-
- private FilterBuilder filterFactory;
- private QueryBuilder queryFactory;
-
- public FilteredQueryBuilder(FilterBuilder filterFactory, QueryBuilder queryFactory)
- {
- this.filterFactory=filterFactory;
- this.queryFactory=queryFactory;
-
- }
-
- /* (non-Javadoc)
- * @see org.apache.lucene.xmlparser.QueryObjectBuilder#process(org.w3c.dom.Element)
- */
- public Query getQuery(Element e) throws ParserException {
- Element filterElement=DOMUtils.getChildByTagOrFail(e,"Filter");
- filterElement=DOMUtils.getFirstChildOrFail(filterElement);
- Filter f=filterFactory.getFilter(filterElement);
-
- Element queryElement=DOMUtils.getChildByTagOrFail(e,"Query");
- queryElement=DOMUtils.getFirstChildOrFail(queryElement);
- Query q=queryFactory.getQuery(queryElement);
-
- FilteredQuery fq = new FilteredQuery(q,f);
- fq.setBoost(DOMUtils.getAttribute(e,"boost",1.0f));
- return fq;
- }
+
+ private final FilterBuilder filterFactory;
+ private final QueryBuilder queryFactory;
+
+ public FilteredQueryBuilder(FilterBuilder filterFactory, QueryBuilder queryFactory) {
+ this.filterFactory = filterFactory;
+ this.queryFactory = queryFactory;
+
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.lucene.xmlparser.QueryObjectBuilder#process(org.w3c.dom.Element)
+ */
+ public Query getQuery(Element e) throws ParserException {
+ Element filterElement = DOMUtils.getChildByTagOrFail(e, "Filter");
+ filterElement = DOMUtils.getFirstChildOrFail(filterElement);
+ Filter f = filterFactory.getFilter(filterElement);
+
+ Element queryElement = DOMUtils.getChildByTagOrFail(e, "Query");
+ queryElement = DOMUtils.getFirstChildOrFail(queryElement);
+ Query q = queryFactory.getQuery(queryElement);
+
+ FilteredQuery fq = new FilteredQuery(q, f);
+ fq.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
+ return fq;
+ }
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/FuzzyLikeThisQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/FuzzyLikeThisQueryBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/FuzzyLikeThisQueryBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/FuzzyLikeThisQueryBuilder.java Tue Aug 23 14:06:58 2011
@@ -1,7 +1,7 @@
package org.apache.lucene.xmlparser.builders;
import org.apache.lucene.analysis.Analyzer;
-import org.apache.lucene.search.FuzzyLikeThisQuery;
+import org.apache.lucene.sandbox.queries.FuzzyLikeThisQuery;
import org.apache.lucene.search.FuzzyQuery;
import org.apache.lucene.search.Query;
import org.apache.lucene.xmlparser.DOMUtils;
@@ -28,40 +28,39 @@ import org.w3c.dom.NodeList;
*/
/**
- *
+ *
*/
-public class FuzzyLikeThisQueryBuilder implements QueryBuilder
-{
- int defaultMaxNumTerms=50;
- float defaultMinSimilarity=FuzzyQuery.defaultMinSimilarity;
- int defaultPrefixLength=1;
- boolean defaultIgnoreTF=false;
- private Analyzer analyzer;
-
- public FuzzyLikeThisQueryBuilder(Analyzer analyzer)
- {
- this.analyzer=analyzer;
- }
-
- public Query getQuery(Element e) throws ParserException
- {
- NodeList nl = e.getElementsByTagName("Field");
- int maxNumTerms=DOMUtils.getAttribute(e,"maxNumTerms",defaultMaxNumTerms);
- FuzzyLikeThisQuery fbq=new FuzzyLikeThisQuery(maxNumTerms,analyzer);
- fbq.setIgnoreTF(DOMUtils.getAttribute(e,"ignoreTF",defaultIgnoreTF));
- for(int i=0;i<nl.getLength();i++)
- {
- Element fieldElem=(Element) nl.item(i);
- float minSimilarity=DOMUtils.getAttribute(fieldElem,"minSimilarity",defaultMinSimilarity);
- int prefixLength=DOMUtils.getAttribute(fieldElem,"prefixLength",defaultPrefixLength);
- String fieldName=DOMUtils.getAttributeWithInheritance(fieldElem,"fieldName");
-
- String value=DOMUtils.getText(fieldElem);
- fbq.addTerms(value,fieldName,minSimilarity,prefixLength);
- }
- fbq.setBoost(DOMUtils.getAttribute(e,"boost",1.0f));
+public class FuzzyLikeThisQueryBuilder implements QueryBuilder {
- return fbq;
- }
+ private static final int DEFAULT_MAX_NUM_TERMS = 50;
+ private static final float DEFAULT_MIN_SIMILARITY = FuzzyQuery.defaultMinSimilarity;
+ private static final int DEFAULT_PREFIX_LENGTH = 1;
+ private static final boolean DEFAULT_IGNORE_TF = false;
+
+ private final Analyzer analyzer;
+
+ public FuzzyLikeThisQueryBuilder(Analyzer analyzer) {
+ this.analyzer = analyzer;
+ }
+
+ public Query getQuery(Element e) throws ParserException {
+ NodeList nl = e.getElementsByTagName("Field");
+ int maxNumTerms = DOMUtils.getAttribute(e, "maxNumTerms", DEFAULT_MAX_NUM_TERMS);
+ FuzzyLikeThisQuery fbq = new FuzzyLikeThisQuery(maxNumTerms, analyzer);
+ fbq.setIgnoreTF(DOMUtils.getAttribute(e, "ignoreTF", DEFAULT_IGNORE_TF));
+
+ for (int i = 0; i < nl.getLength(); i++) {
+ Element fieldElem = (Element) nl.item(i);
+ float minSimilarity = DOMUtils.getAttribute(fieldElem, "minSimilarity", DEFAULT_MIN_SIMILARITY);
+ int prefixLength = DOMUtils.getAttribute(fieldElem, "prefixLength", DEFAULT_PREFIX_LENGTH);
+ String fieldName = DOMUtils.getAttributeWithInheritance(fieldElem, "fieldName");
+
+ String value = DOMUtils.getText(fieldElem);
+ fbq.addTerms(value, fieldName, minSimilarity, prefixLength);
+ }
+
+ fbq.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
+ return fbq;
+ }
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/LikeThisQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/LikeThisQueryBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/LikeThisQueryBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/LikeThisQueryBuilder.java Tue Aug 23 14:06:58 2011
@@ -35,83 +35,74 @@ import org.w3c.dom.Element;
*/
/**
- *
+ *
*/
public class LikeThisQueryBuilder implements QueryBuilder {
- private Analyzer analyzer;
- String defaultFieldNames [];
- int defaultMaxQueryTerms=20;
- int defaultMinTermFrequency=1;
- float defaultPercentTermsToMatch=30; //default is a 3rd of selected terms must match
-
- public LikeThisQueryBuilder(Analyzer analyzer,String [] defaultFieldNames)
- {
- this.analyzer=analyzer;
- this.defaultFieldNames=defaultFieldNames;
- }
-
- /* (non-Javadoc)
- * @see org.apache.lucene.xmlparser.QueryObjectBuilder#process(org.w3c.dom.Element)
- */
- public Query getQuery(Element e) throws ParserException {
- String fieldsList=e.getAttribute("fieldNames"); //a comma-delimited list of fields
- String fields[]=defaultFieldNames;
- if((fieldsList!=null)&&(fieldsList.trim().length()>0))
- {
- fields=fieldsList.trim().split(",");
- //trim the fieldnames
- for (int i = 0; i < fields.length; i++) {
- fields[i]=fields[i].trim();
- }
- }
-
- //Parse any "stopWords" attribute
- //TODO MoreLikeThis needs to ideally have per-field stopWords lists - until then
- //I use all analyzers/fields to generate multi-field compatible stop list
- String stopWords=e.getAttribute("stopWords");
- Set<String> stopWordsSet=null;
- if((stopWords!=null)&&(fields!=null))
- {
- stopWordsSet=new HashSet<String>();
- for (int i = 0; i < fields.length; i++)
- {
- try
- {
- TokenStream ts = analyzer.reusableTokenStream(fields[i],new StringReader(stopWords));
- CharTermAttribute termAtt = ts.addAttribute(CharTermAttribute.class);
- ts.reset();
- while(ts.incrementToken()) {
- stopWordsSet.add(termAtt.toString());
- }
- ts.end();
- ts.close();
- }
- catch(IOException ioe)
- {
- throw new ParserException("IoException parsing stop words list in "
- +getClass().getName()+":"+ioe.getLocalizedMessage());
- }
- }
- }
-
-
- MoreLikeThisQuery mlt=new MoreLikeThisQuery(DOMUtils.getText(e),fields,analyzer);
- mlt.setMaxQueryTerms(DOMUtils.getAttribute(e,"maxQueryTerms",defaultMaxQueryTerms));
- mlt.setMinTermFrequency(DOMUtils.getAttribute(e,"minTermFrequency",defaultMinTermFrequency));
- mlt.setPercentTermsToMatch(DOMUtils.getAttribute(e,"percentTermsToMatch",defaultPercentTermsToMatch)/100);
- mlt.setStopWords(stopWordsSet);
- int minDocFreq=DOMUtils.getAttribute(e,"minDocFreq",-1);
- if(minDocFreq>=0)
- {
- mlt.setMinDocFreq(minDocFreq);
- }
-
- mlt.setBoost(DOMUtils.getAttribute(e,"boost",1.0f));
-
- return mlt;
- }
+ private static final int DEFAULT_MAX_QUERY_TERMS = 20;
+ private static final int DEFAULT_MIN_TERM_FREQUENCY = 1;
+ private static final float DEFAULT_PERCENT_TERMS_TO_MATCH = 30; //default is a 3rd of selected terms must match
+
+ private final Analyzer analyzer;
+ private final String defaultFieldNames[];
+
+ public LikeThisQueryBuilder(Analyzer analyzer, String[] defaultFieldNames) {
+ this.analyzer = analyzer;
+ this.defaultFieldNames = defaultFieldNames;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.lucene.xmlparser.QueryObjectBuilder#process(org.w3c.dom.Element)
+ */
+ public Query getQuery(Element e) throws ParserException {
+ String fieldsList = e.getAttribute("fieldNames"); //a comma-delimited list of fields
+ String fields[] = defaultFieldNames;
+ if ((fieldsList != null) && (fieldsList.trim().length() > 0)) {
+ fields = fieldsList.trim().split(",");
+ //trim the fieldnames
+ for (int i = 0; i < fields.length; i++) {
+ fields[i] = fields[i].trim();
+ }
+ }
+
+ //Parse any "stopWords" attribute
+ //TODO MoreLikeThis needs to ideally have per-field stopWords lists - until then
+ //I use all analyzers/fields to generate multi-field compatible stop list
+ String stopWords = e.getAttribute("stopWords");
+ Set<String> stopWordsSet = null;
+ if ((stopWords != null) && (fields != null)) {
+ stopWordsSet = new HashSet<String>();
+ for (String field : fields) {
+ try {
+ TokenStream ts = analyzer.reusableTokenStream(field, new StringReader(stopWords));
+ CharTermAttribute termAtt = ts.addAttribute(CharTermAttribute.class);
+ ts.reset();
+ while (ts.incrementToken()) {
+ stopWordsSet.add(termAtt.toString());
+ }
+ ts.end();
+ ts.close();
+ } catch (IOException ioe) {
+ throw new ParserException("IoException parsing stop words list in "
+ + getClass().getName() + ":" + ioe.getLocalizedMessage());
+ }
+ }
+ }
+
+
+ MoreLikeThisQuery mlt = new MoreLikeThisQuery(DOMUtils.getText(e), fields, analyzer, fields[0]);
+ mlt.setMaxQueryTerms(DOMUtils.getAttribute(e, "maxQueryTerms", DEFAULT_MAX_QUERY_TERMS));
+ mlt.setMinTermFrequency(DOMUtils.getAttribute(e, "minTermFrequency", DEFAULT_MIN_TERM_FREQUENCY));
+ mlt.setPercentTermsToMatch(DOMUtils.getAttribute(e, "percentTermsToMatch", DEFAULT_PERCENT_TERMS_TO_MATCH) / 100);
+ mlt.setStopWords(stopWordsSet);
+ int minDocFreq = DOMUtils.getAttribute(e, "minDocFreq", -1);
+ if (minDocFreq >= 0) {
+ mlt.setMinDocFreq(minDocFreq);
+ }
+ mlt.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
+ return mlt;
+ }
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/MatchAllDocsQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/MatchAllDocsQueryBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/MatchAllDocsQueryBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/MatchAllDocsQueryBuilder.java Tue Aug 23 14:06:58 2011
@@ -23,12 +23,11 @@ import org.w3c.dom.Element;
*/
/**
- *
+ *
*/
-public class MatchAllDocsQueryBuilder implements QueryBuilder
-{
- public Query getQuery(Element e) throws ParserException
- {
- return new MatchAllDocsQuery();
- }
+public class MatchAllDocsQueryBuilder implements QueryBuilder {
+
+ public Query getQuery(Element e) throws ParserException {
+ return new MatchAllDocsQuery();
+ }
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/NumericRangeFilterBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/NumericRangeFilterBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/NumericRangeFilterBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/NumericRangeFilterBuilder.java Tue Aug 23 14:06:58 2011
@@ -17,8 +17,6 @@ package org.apache.lucene.xmlparser.buil
* limitations under the License.
*/
-import java.io.IOException;
-
import org.apache.lucene.index.IndexReader.AtomicReaderContext;
import org.apache.lucene.search.DocIdSet;
import org.apache.lucene.search.Filter;
@@ -29,6 +27,8 @@ import org.apache.lucene.xmlparser.Filte
import org.apache.lucene.xmlparser.ParserException;
import org.w3c.dom.Element;
+import java.io.IOException;
+
/**
* Creates a {@link NumericRangeFilter}. The table below specifies the required
* attributes and the defaults if optional attributes are omitted. For more
@@ -84,80 +84,79 @@ import org.w3c.dom.Element;
* <td>4</td>
* </tr>
* </table>
- * <p>
+ * <p/>
* If an error occurs parsing the supplied <tt>lowerTerm</tt> or
* <tt>upperTerm</tt> into the numeric type specified by <tt>type</tt>, then the
* error will be silently ignored and the resulting filter will not match any
* documents.
*/
public class NumericRangeFilterBuilder implements FilterBuilder {
- private static final NoMatchFilter NO_MATCH_FILTER = new NoMatchFilter();
-
- private boolean strictMode = false;
-
- /**
- * Specifies how this {@link NumericRangeFilterBuilder} will handle errors.
- * <p>
- * If this is set to true, {@link #getFilter(Element)} will throw a
- * {@link ParserException} if it is unable to parse the lowerTerm or upperTerm
- * into the appropriate numeric type. If this is set to false, then this
- * exception will be silently ignored and the resulting filter will not match
- * any documents.
- * <p>
- * Defaults to false.
- *
- * @param strictMode
- */
- public void setStrictMode(boolean strictMode) {
- this.strictMode = strictMode;
- }
-
- public Filter getFilter(Element e) throws ParserException {
- String field = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
- String lowerTerm = DOMUtils.getAttributeOrFail(e, "lowerTerm");
- String upperTerm = DOMUtils.getAttributeOrFail(e, "upperTerm");
- boolean lowerInclusive = DOMUtils.getAttribute(e, "includeLower", true);
- boolean upperInclusive = DOMUtils.getAttribute(e, "includeUpper", true);
- int precisionStep = DOMUtils.getAttribute(e, "precisionStep", NumericUtils.PRECISION_STEP_DEFAULT);
-
- String type = DOMUtils.getAttribute(e, "type", "int");
- try {
- Filter filter;
- if (type.equalsIgnoreCase("int")) {
- filter = NumericRangeFilter.newIntRange(field, precisionStep, Integer
- .valueOf(lowerTerm), Integer.valueOf(upperTerm), lowerInclusive,
- upperInclusive);
- } else if (type.equalsIgnoreCase("long")) {
- filter = NumericRangeFilter.newLongRange(field, precisionStep, Long
- .valueOf(lowerTerm), Long.valueOf(upperTerm), lowerInclusive,
- upperInclusive);
- } else if (type.equalsIgnoreCase("double")) {
- filter = NumericRangeFilter.newDoubleRange(field, precisionStep, Double
- .valueOf(lowerTerm), Double.valueOf(upperTerm), lowerInclusive,
- upperInclusive);
- } else if (type.equalsIgnoreCase("float")) {
- filter = NumericRangeFilter.newFloatRange(field, precisionStep, Float
- .valueOf(lowerTerm), Float.valueOf(upperTerm), lowerInclusive,
- upperInclusive);
- } else {
- throw new ParserException(
- "type attribute must be one of: [long, int, double, float]");
- }
- return filter;
- } catch (NumberFormatException nfe) {
- if (strictMode) {
- throw new ParserException(
- "Could not parse lowerTerm or upperTerm into a number", nfe);
- }
- return NO_MATCH_FILTER;
- }
- }
+
+ private static final NoMatchFilter NO_MATCH_FILTER = new NoMatchFilter();
- static class NoMatchFilter extends Filter {
+ private boolean strictMode = false;
- @Override
- public DocIdSet getDocIdSet(AtomicReaderContext context) throws IOException {
- return null;
+ /**
+ * Specifies how this {@link NumericRangeFilterBuilder} will handle errors.
+ * <p/>
+ * If this is set to true, {@link #getFilter(Element)} will throw a
+ * {@link ParserException} if it is unable to parse the lowerTerm or upperTerm
+ * into the appropriate numeric type. If this is set to false, then this
+ * exception will be silently ignored and the resulting filter will not match
+ * any documents.
+ * <p/>
+ * Defaults to false.
+ *
+ * @param strictMode
+ */
+ public void setStrictMode(boolean strictMode) {
+ this.strictMode = strictMode;
+ }
+
+ public Filter getFilter(Element e) throws ParserException {
+ String field = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
+ String lowerTerm = DOMUtils.getAttributeOrFail(e, "lowerTerm");
+ String upperTerm = DOMUtils.getAttributeOrFail(e, "upperTerm");
+ boolean lowerInclusive = DOMUtils.getAttribute(e, "includeLower", true);
+ boolean upperInclusive = DOMUtils.getAttribute(e, "includeUpper", true);
+ int precisionStep = DOMUtils.getAttribute(e, "precisionStep", NumericUtils.PRECISION_STEP_DEFAULT);
+
+ String type = DOMUtils.getAttribute(e, "type", "int");
+ try {
+ Filter filter;
+ if (type.equalsIgnoreCase("int")) {
+ filter = NumericRangeFilter.newIntRange(field, precisionStep, Integer
+ .valueOf(lowerTerm), Integer.valueOf(upperTerm), lowerInclusive,
+ upperInclusive);
+ } else if (type.equalsIgnoreCase("long")) {
+ filter = NumericRangeFilter.newLongRange(field, precisionStep, Long
+ .valueOf(lowerTerm), Long.valueOf(upperTerm), lowerInclusive,
+ upperInclusive);
+ } else if (type.equalsIgnoreCase("double")) {
+ filter = NumericRangeFilter.newDoubleRange(field, precisionStep, Double
+ .valueOf(lowerTerm), Double.valueOf(upperTerm), lowerInclusive,
+ upperInclusive);
+ } else if (type.equalsIgnoreCase("float")) {
+ filter = NumericRangeFilter.newFloatRange(field, precisionStep, Float
+ .valueOf(lowerTerm), Float.valueOf(upperTerm), lowerInclusive,
+ upperInclusive);
+ } else {
+ throw new ParserException("type attribute must be one of: [long, int, double, float]");
+ }
+ return filter;
+ } catch (NumberFormatException nfe) {
+ if (strictMode) {
+ throw new ParserException("Could not parse lowerTerm or upperTerm into a number", nfe);
+ }
+ return NO_MATCH_FILTER;
+ }
+ }
+
+ static class NoMatchFilter extends Filter {
+
+ @Override
+ public DocIdSet getDocIdSet(AtomicReaderContext context) throws IOException {
+ return null;
}
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/NumericRangeQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/NumericRangeQueryBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/NumericRangeQueryBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/NumericRangeQueryBuilder.java Tue Aug 23 14:06:58 2011
@@ -80,48 +80,46 @@ import org.w3c.dom.Element;
* <td>4</td>
* </tr>
* </table>
- * <p>
+ * <p/>
* A {@link ParserException} will be thrown if an error occurs parsing the
* supplied <tt>lowerTerm</tt> or <tt>upperTerm</tt> into the numeric type
* specified by <tt>type</tt>.
*/
public class NumericRangeQueryBuilder implements QueryBuilder {
- public Query getQuery(Element e) throws ParserException {
- String field = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
- String lowerTerm = DOMUtils.getAttributeOrFail(e, "lowerTerm");
- String upperTerm = DOMUtils.getAttributeOrFail(e, "upperTerm");
- boolean lowerInclusive = DOMUtils.getAttribute(e, "includeLower", true);
- boolean upperInclusive = DOMUtils.getAttribute(e, "includeUpper", true);
- int precisionStep = DOMUtils.getAttribute(e, "precisionStep", NumericUtils.PRECISION_STEP_DEFAULT);
+ public Query getQuery(Element e) throws ParserException {
+ String field = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
+ String lowerTerm = DOMUtils.getAttributeOrFail(e, "lowerTerm");
+ String upperTerm = DOMUtils.getAttributeOrFail(e, "upperTerm");
+ boolean lowerInclusive = DOMUtils.getAttribute(e, "includeLower", true);
+ boolean upperInclusive = DOMUtils.getAttribute(e, "includeUpper", true);
+ int precisionStep = DOMUtils.getAttribute(e, "precisionStep", NumericUtils.PRECISION_STEP_DEFAULT);
- String type = DOMUtils.getAttribute(e, "type", "int");
- try {
- Query filter;
- if (type.equalsIgnoreCase("int")) {
- filter = NumericRangeQuery.newIntRange(field, precisionStep, Integer
- .valueOf(lowerTerm), Integer.valueOf(upperTerm), lowerInclusive,
- upperInclusive);
- } else if (type.equalsIgnoreCase("long")) {
- filter = NumericRangeQuery.newLongRange(field, precisionStep, Long
- .valueOf(lowerTerm), Long.valueOf(upperTerm), lowerInclusive,
- upperInclusive);
- } else if (type.equalsIgnoreCase("double")) {
- filter = NumericRangeQuery.newDoubleRange(field, precisionStep, Double
- .valueOf(lowerTerm), Double.valueOf(upperTerm), lowerInclusive,
- upperInclusive);
- } else if (type.equalsIgnoreCase("float")) {
- filter = NumericRangeQuery.newFloatRange(field, precisionStep, Float
- .valueOf(lowerTerm), Float.valueOf(upperTerm), lowerInclusive,
- upperInclusive);
- } else {
- throw new ParserException(
- "type attribute must be one of: [long, int, double, float]");
- }
- return filter;
- } catch (NumberFormatException nfe) {
- throw new ParserException(
- "Could not parse lowerTerm or upperTerm into a number", nfe);
- }
- }
+ String type = DOMUtils.getAttribute(e, "type", "int");
+ try {
+ Query filter;
+ if (type.equalsIgnoreCase("int")) {
+ filter = NumericRangeQuery.newIntRange(field, precisionStep, Integer
+ .valueOf(lowerTerm), Integer.valueOf(upperTerm), lowerInclusive,
+ upperInclusive);
+ } else if (type.equalsIgnoreCase("long")) {
+ filter = NumericRangeQuery.newLongRange(field, precisionStep, Long
+ .valueOf(lowerTerm), Long.valueOf(upperTerm), lowerInclusive,
+ upperInclusive);
+ } else if (type.equalsIgnoreCase("double")) {
+ filter = NumericRangeQuery.newDoubleRange(field, precisionStep, Double
+ .valueOf(lowerTerm), Double.valueOf(upperTerm), lowerInclusive,
+ upperInclusive);
+ } else if (type.equalsIgnoreCase("float")) {
+ filter = NumericRangeQuery.newFloatRange(field, precisionStep, Float
+ .valueOf(lowerTerm), Float.valueOf(upperTerm), lowerInclusive,
+ upperInclusive);
+ } else {
+ throw new ParserException("type attribute must be one of: [long, int, double, float]");
+ }
+ return filter;
+ } catch (NumberFormatException nfe) {
+ throw new ParserException("Could not parse lowerTerm or upperTerm into a number", nfe);
+ }
+ }
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/RangeFilterBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/RangeFilterBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/RangeFilterBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/RangeFilterBuilder.java Tue Aug 23 14:06:58 2011
@@ -28,20 +28,18 @@ import org.w3c.dom.Element;
/**
- *
+ *
*/
public class RangeFilterBuilder implements FilterBuilder {
+ public Filter getFilter(Element e) throws ParserException {
+ String fieldName = DOMUtils.getAttributeWithInheritance(e, "fieldName");
- public Filter getFilter(Element e) throws ParserException {
-
- String fieldName=DOMUtils.getAttributeWithInheritance(e,"fieldName");
-
- String lowerTerm=e.getAttribute("lowerTerm");
- String upperTerm=e.getAttribute("upperTerm");
- boolean includeLower=DOMUtils.getAttribute(e,"includeLower",true);
- boolean includeUpper=DOMUtils.getAttribute(e,"includeUpper",true);
- return TermRangeFilter.newStringRange(fieldName,lowerTerm,upperTerm,includeLower,includeUpper);
- }
+ String lowerTerm = e.getAttribute("lowerTerm");
+ String upperTerm = e.getAttribute("upperTerm");
+ boolean includeLower = DOMUtils.getAttribute(e, "includeLower", true);
+ boolean includeUpper = DOMUtils.getAttribute(e, "includeUpper", true);
+ return TermRangeFilter.newStringRange(fieldName, lowerTerm, upperTerm, includeLower, includeUpper);
+ }
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanBuilderBase.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanBuilderBase.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanBuilderBase.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanBuilderBase.java Tue Aug 23 14:06:58 2011
@@ -21,13 +21,12 @@ import org.w3c.dom.Element;
*/
/**
- *
+ *
*/
-public abstract class SpanBuilderBase implements SpanQueryBuilder
-{
- public Query getQuery(Element e) throws ParserException
- {
- return getSpanQuery(e);
- }
+public abstract class SpanBuilderBase implements SpanQueryBuilder {
+
+ public Query getQuery(Element e) throws ParserException {
+ return getSpanQuery(e);
+ }
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanFirstBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanFirstBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanFirstBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanFirstBuilder.java Tue Aug 23 14:06:58 2011
@@ -23,28 +23,25 @@ import org.w3c.dom.Element;
*/
/**
- *
+ *
*/
-public class SpanFirstBuilder extends SpanBuilderBase
-{
- SpanQueryBuilder factory;
-
- public SpanFirstBuilder(SpanQueryBuilder factory)
- {
- super();
- this.factory = factory;
- }
-
- public SpanQuery getSpanQuery(Element e) throws ParserException
- {
- int end=DOMUtils.getAttribute(e,"end",1);
- Element child=DOMUtils.getFirstChildElement(e);
- SpanQuery q=factory.getSpanQuery(child);
-
- SpanFirstQuery sfq = new SpanFirstQuery(q,end);
-
- sfq.setBoost(DOMUtils.getAttribute(e,"boost",1.0f));
- return sfq;
- }
+public class SpanFirstBuilder extends SpanBuilderBase {
+
+ private final SpanQueryBuilder factory;
+
+ public SpanFirstBuilder(SpanQueryBuilder factory) {
+ this.factory = factory;
+ }
+
+ public SpanQuery getSpanQuery(Element e) throws ParserException {
+ int end = DOMUtils.getAttribute(e, "end", 1);
+ Element child = DOMUtils.getFirstChildElement(e);
+ SpanQuery q = factory.getSpanQuery(child);
+
+ SpanFirstQuery sfq = new SpanFirstQuery(q, end);
+
+ sfq.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
+ return sfq;
+ }
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanNearBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanNearBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanNearBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanNearBuilder.java Tue Aug 23 14:06:58 2011
@@ -1,13 +1,14 @@
package org.apache.lucene.xmlparser.builders;
-import java.util.ArrayList;
-
import org.apache.lucene.search.spans.SpanNearQuery;
import org.apache.lucene.search.spans.SpanQuery;
import org.apache.lucene.xmlparser.DOMUtils;
import org.apache.lucene.xmlparser.ParserException;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
+
+import java.util.ArrayList;
+import java.util.List;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -26,32 +27,28 @@ import org.w3c.dom.Node;
*/
/**
- *
+ *
*/
-public class SpanNearBuilder extends SpanBuilderBase
-{
- SpanQueryBuilder factory;
- public SpanNearBuilder(SpanQueryBuilder factory)
- {
- this.factory=factory;
- }
-
- public SpanQuery getSpanQuery(Element e) throws ParserException
- {
- String slopString=DOMUtils.getAttributeOrFail(e,"slop");
- int slop=Integer.parseInt(slopString);
- boolean inOrder=DOMUtils.getAttribute(e,"inOrder",false);
- ArrayList<SpanQuery> spans=new ArrayList<SpanQuery>();
- for (Node kid = e.getFirstChild(); kid != null; kid = kid.getNextSibling())
- {
- if (kid.getNodeType() == Node.ELEMENT_NODE)
- {
- spans.add(factory.getSpanQuery((Element) kid));
- }
- }
- SpanQuery[] spanQueries= spans.toArray(new SpanQuery[spans.size()]);
- SpanNearQuery snq=new SpanNearQuery(spanQueries,slop,inOrder);
- return snq;
- }
+public class SpanNearBuilder extends SpanBuilderBase {
+
+ private final SpanQueryBuilder factory;
+
+ public SpanNearBuilder(SpanQueryBuilder factory) {
+ this.factory = factory;
+ }
+
+ public SpanQuery getSpanQuery(Element e) throws ParserException {
+ String slopString = DOMUtils.getAttributeOrFail(e, "slop");
+ int slop = Integer.parseInt(slopString);
+ boolean inOrder = DOMUtils.getAttribute(e, "inOrder", false);
+ List<SpanQuery> spans = new ArrayList<SpanQuery>();
+ for (Node kid = e.getFirstChild(); kid != null; kid = kid.getNextSibling()) {
+ if (kid.getNodeType() == Node.ELEMENT_NODE) {
+ spans.add(factory.getSpanQuery((Element) kid));
+ }
+ }
+ SpanQuery[] spanQueries = spans.toArray(new SpanQuery[spans.size()]);
+ return new SpanNearQuery(spanQueries, slop, inOrder);
+ }
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanNotBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanNotBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanNotBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanNotBuilder.java Tue Aug 23 14:06:58 2011
@@ -23,36 +23,33 @@ import org.w3c.dom.Element;
*/
/**
- *
+ *
*/
-public class SpanNotBuilder extends SpanBuilderBase
-{
-
- SpanQueryBuilder factory;
-
- /**
- * @param factory
- */
- public SpanNotBuilder(SpanQueryBuilder factory)
- {
- super();
- this.factory = factory;
- }
- public SpanQuery getSpanQuery(Element e) throws ParserException
- {
- Element includeElem=DOMUtils.getChildByTagOrFail(e,"Include");
- includeElem=DOMUtils.getFirstChildOrFail(includeElem);
-
- Element excludeElem=DOMUtils.getChildByTagOrFail(e,"Exclude");
- excludeElem=DOMUtils.getFirstChildOrFail(excludeElem);
-
- SpanQuery include=factory.getSpanQuery(includeElem);
- SpanQuery exclude=factory.getSpanQuery(excludeElem);
-
- SpanNotQuery snq = new SpanNotQuery(include,exclude);
-
- snq.setBoost(DOMUtils.getAttribute(e,"boost",1.0f));
- return snq;
- }
+public class SpanNotBuilder extends SpanBuilderBase {
+
+ private final SpanQueryBuilder factory;
+
+ /**
+ * @param factory
+ */
+ public SpanNotBuilder(SpanQueryBuilder factory) {
+ this.factory = factory;
+ }
+
+ public SpanQuery getSpanQuery(Element e) throws ParserException {
+ Element includeElem = DOMUtils.getChildByTagOrFail(e, "Include");
+ includeElem = DOMUtils.getFirstChildOrFail(includeElem);
+
+ Element excludeElem = DOMUtils.getChildByTagOrFail(e, "Exclude");
+ excludeElem = DOMUtils.getFirstChildOrFail(excludeElem);
+
+ SpanQuery include = factory.getSpanQuery(includeElem);
+ SpanQuery exclude = factory.getSpanQuery(excludeElem);
+
+ SpanNotQuery snq = new SpanNotQuery(include, exclude);
+
+ snq.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
+ return snq;
+ }
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanOrBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanOrBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanOrBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanOrBuilder.java Tue Aug 23 14:06:58 2011
@@ -1,13 +1,14 @@
package org.apache.lucene.xmlparser.builders;
-import java.util.ArrayList;
-
import org.apache.lucene.search.spans.SpanOrQuery;
import org.apache.lucene.search.spans.SpanQuery;
import org.apache.lucene.xmlparser.DOMUtils;
import org.apache.lucene.xmlparser.ParserException;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
+
+import java.util.ArrayList;
+import java.util.List;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -26,34 +27,28 @@ import org.w3c.dom.Node;
*/
/**
- *
+ *
*/
-public class SpanOrBuilder extends SpanBuilderBase
-{
-
- SpanQueryBuilder factory;
-
- public SpanOrBuilder(SpanQueryBuilder factory)
- {
- super();
- this.factory = factory;
+public class SpanOrBuilder extends SpanBuilderBase {
+
+ private final SpanQueryBuilder factory;
+
+ public SpanOrBuilder(SpanQueryBuilder factory) {
+ this.factory = factory;
+ }
+
+ public SpanQuery getSpanQuery(Element e) throws ParserException {
+ List<SpanQuery> clausesList = new ArrayList<SpanQuery>();
+ for (Node kid = e.getFirstChild(); kid != null; kid = kid.getNextSibling()) {
+ if (kid.getNodeType() == Node.ELEMENT_NODE) {
+ SpanQuery clause = factory.getSpanQuery((Element) kid);
+ clausesList.add(clause);
+ }
}
-
- public SpanQuery getSpanQuery(Element e) throws ParserException
- {
- ArrayList<SpanQuery> clausesList=new ArrayList<SpanQuery>();
- for (Node kid = e.getFirstChild(); kid != null; kid = kid.getNextSibling())
- {
- if (kid.getNodeType() == Node.ELEMENT_NODE)
- {
- SpanQuery clause=factory.getSpanQuery((Element) kid);
- clausesList.add(clause);
- }
- }
- SpanQuery[] clauses= clausesList.toArray(new SpanQuery[clausesList.size()]);
- SpanOrQuery soq = new SpanOrQuery(clauses);
- soq.setBoost(DOMUtils.getAttribute(e,"boost",1.0f));
- return soq;
- }
+ SpanQuery[] clauses = clausesList.toArray(new SpanQuery[clausesList.size()]);
+ SpanOrQuery soq = new SpanOrQuery(clauses);
+ soq.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
+ return soq;
+ }
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanOrTermsBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanOrTermsBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanOrTermsBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanOrTermsBuilder.java Tue Aug 23 14:06:58 2011
@@ -1,9 +1,5 @@
package org.apache.lucene.xmlparser.builders;
-import java.io.IOException;
-import java.io.StringReader;
-import java.util.ArrayList;
-
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.TermToBytesRefAttribute;
@@ -15,6 +11,11 @@ import org.apache.lucene.util.BytesRef;
import org.apache.lucene.xmlparser.DOMUtils;
import org.apache.lucene.xmlparser.ParserException;
import org.w3c.dom.Element;
+
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.ArrayList;
+import java.util.List;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -33,48 +34,43 @@ import org.w3c.dom.Element;
*/
/**
- *
+ *
*/
-public class SpanOrTermsBuilder extends SpanBuilderBase
-{
- Analyzer analyzer;
-
-
- /**
- * @param analyzer
- */
- public SpanOrTermsBuilder(Analyzer analyzer)
- {
- super();
- this.analyzer = analyzer;
- }
- public SpanQuery getSpanQuery(Element e) throws ParserException
- {
- String fieldName=DOMUtils.getAttributeWithInheritanceOrFail(e,"fieldName");
- String value=DOMUtils.getNonBlankTextOrFail(e);
-
- try
- {
- ArrayList<SpanQuery> clausesList=new ArrayList<SpanQuery>();
- TokenStream ts=analyzer.reusableTokenStream(fieldName,new StringReader(value));
- TermToBytesRefAttribute termAtt = ts.addAttribute(TermToBytesRefAttribute.class);
+public class SpanOrTermsBuilder extends SpanBuilderBase {
+
+ private final Analyzer analyzer;
+
+ /**
+ * @param analyzer
+ */
+ public SpanOrTermsBuilder(Analyzer analyzer) {
+ this.analyzer = analyzer;
+ }
+
+ public SpanQuery getSpanQuery(Element e) throws ParserException {
+ String fieldName = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
+ String value = DOMUtils.getNonBlankTextOrFail(e);
+
+ try {
+ List<SpanQuery> clausesList = new ArrayList<SpanQuery>();
+ TokenStream ts = analyzer.reusableTokenStream(fieldName, new StringReader(value));
+ TermToBytesRefAttribute termAtt = ts.addAttribute(TermToBytesRefAttribute.class);
BytesRef bytes = termAtt.getBytesRef();
ts.reset();
- while (ts.incrementToken()) {
- termAtt.fillBytesRef();
- SpanTermQuery stq=new SpanTermQuery(new Term(fieldName, new BytesRef(bytes)));
- clausesList.add(stq);
- }
- ts.end();
- ts.close();
- SpanOrQuery soq=new SpanOrQuery(clausesList.toArray(new SpanQuery[clausesList.size()]));
- soq.setBoost(DOMUtils.getAttribute(e,"boost",1.0f));
- return soq;
- }
- catch(IOException ioe)
- {
- throw new ParserException("IOException parsing value:"+value);
- }
- }
+ while (ts.incrementToken()) {
+ termAtt.fillBytesRef();
+ SpanTermQuery stq = new SpanTermQuery(new Term(fieldName, new BytesRef(bytes)));
+ clausesList.add(stq);
+ }
+ ts.end();
+ ts.close();
+ SpanOrQuery soq = new SpanOrQuery(clausesList.toArray(new SpanQuery[clausesList.size()]));
+ soq.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
+ return soq;
+ }
+ catch (IOException ioe) {
+ throw new ParserException("IOException parsing value:" + value);
+ }
+ }
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanQueryBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanQueryBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanQueryBuilder.java Tue Aug 23 14:06:58 2011
@@ -20,9 +20,7 @@ import org.apache.lucene.xmlparser.Parse
import org.apache.lucene.xmlparser.QueryBuilder;
import org.w3c.dom.Element;
-
-public interface SpanQueryBuilder extends QueryBuilder{
+public interface SpanQueryBuilder extends QueryBuilder {
public SpanQuery getSpanQuery(Element e) throws ParserException;
-
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanQueryBuilderFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanQueryBuilderFactory.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanQueryBuilderFactory.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanQueryBuilderFactory.java Tue Aug 23 14:06:58 2011
@@ -1,11 +1,12 @@
package org.apache.lucene.xmlparser.builders;
-import java.util.HashMap;
-
import org.apache.lucene.search.Query;
import org.apache.lucene.search.spans.SpanQuery;
import org.apache.lucene.xmlparser.ParserException;
import org.w3c.dom.Element;
+
+import java.util.HashMap;
+import java.util.Map;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -24,27 +25,26 @@ import org.w3c.dom.Element;
*/
/**
- *
+ *
*/
public class SpanQueryBuilderFactory implements SpanQueryBuilder {
- HashMap<String,SpanQueryBuilder> builders=new HashMap<String,SpanQueryBuilder>();
-
- public Query getQuery(Element e) throws ParserException {
- return getSpanQuery(e);
- }
- public void addBuilder(String nodeName,SpanQueryBuilder builder)
- {
- builders.put(nodeName,builder);
- }
- public SpanQuery getSpanQuery(Element e) throws ParserException
- {
- SpanQueryBuilder builder= builders.get(e.getNodeName());
- if(builder==null)
- {
- throw new ParserException("No SpanQueryObjectBuilder defined for node "+e.getNodeName());
- }
- return builder.getSpanQuery(e);
- }
+ private final Map<String, SpanQueryBuilder> builders = new HashMap<String, SpanQueryBuilder>();
+
+ public Query getQuery(Element e) throws ParserException {
+ return getSpanQuery(e);
+ }
+
+ public void addBuilder(String nodeName, SpanQueryBuilder builder) {
+ builders.put(nodeName, builder);
+ }
+
+ public SpanQuery getSpanQuery(Element e) throws ParserException {
+ SpanQueryBuilder builder = builders.get(e.getNodeName());
+ if (builder == null) {
+ throw new ParserException("No SpanQueryObjectBuilder defined for node " + e.getNodeName());
+ }
+ return builder.getSpanQuery(e);
+ }
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanTermBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanTermBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanTermBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/SpanTermBuilder.java Tue Aug 23 14:06:58 2011
@@ -24,20 +24,17 @@ import org.w3c.dom.Element;
*/
/**
- *
+ *
*/
-public class SpanTermBuilder extends SpanBuilderBase
-{
+public class SpanTermBuilder extends SpanBuilderBase {
- public SpanQuery getSpanQuery(Element e) throws ParserException
- {
- String fieldName=DOMUtils.getAttributeWithInheritanceOrFail(e,"fieldName");
- String value=DOMUtils.getNonBlankTextOrFail(e);
- SpanTermQuery stq = new SpanTermQuery(new Term(fieldName,value));
-
- stq.setBoost(DOMUtils.getAttribute(e,"boost",1.0f));
- return stq;
-
- }
+ public SpanQuery getSpanQuery(Element e) throws ParserException {
+ String fieldName = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
+ String value = DOMUtils.getNonBlankTextOrFail(e);
+ SpanTermQuery stq = new SpanTermQuery(new Term(fieldName, value));
+
+ stq.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
+ return stq;
+ }
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/TermQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/TermQueryBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/TermQueryBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/TermQueryBuilder.java Tue Aug 23 14:06:58 2011
@@ -25,19 +25,16 @@ import org.w3c.dom.Element;
*/
/**
- *
+ *
*/
public class TermQueryBuilder implements QueryBuilder {
- public Query getQuery(Element e) throws ParserException {
-
- String field=DOMUtils.getAttributeWithInheritanceOrFail(e,"fieldName");
- String value=DOMUtils.getNonBlankTextOrFail(e);
- TermQuery tq = new TermQuery(new Term(field,value));
- tq.setBoost(DOMUtils.getAttribute(e,"boost",1.0f));
-
- return tq;
-
- }
+ public Query getQuery(Element e) throws ParserException {
+ String field = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
+ String value = DOMUtils.getNonBlankTextOrFail(e);
+ TermQuery tq = new TermQuery(new Term(field, value));
+ tq.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
+ return tq;
+ }
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/TermsFilterBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/TermsFilterBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/TermsFilterBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/TermsFilterBuilder.java Tue Aug 23 14:06:58 2011
@@ -1,20 +1,20 @@
package org.apache.lucene.xmlparser.builders;
-import java.io.IOException;
-import java.io.StringReader;
-
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.TermToBytesRefAttribute;
import org.apache.lucene.index.Term;
import org.apache.lucene.search.Filter;
-import org.apache.lucene.search.TermsFilter;
+import org.apache.lucene.queries.TermsFilter;
import org.apache.lucene.util.BytesRef;
import org.apache.lucene.xmlparser.DOMUtils;
import org.apache.lucene.xmlparser.FilterBuilder;
import org.apache.lucene.xmlparser.ParserException;
import org.w3c.dom.Element;
+import java.io.IOException;
+import java.io.StringReader;
+
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -33,51 +33,46 @@ import org.w3c.dom.Element;
*/
/**
- *
+ *
*/
-public class TermsFilterBuilder implements FilterBuilder
-{
- Analyzer analyzer;
-
- /**
- * @param analyzer
- */
- public TermsFilterBuilder(Analyzer analyzer)
- {
- this.analyzer = analyzer;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.apache.lucene.xmlparser.FilterBuilder#process(org.w3c.dom.Element)
- */
- public Filter getFilter(Element e) throws ParserException
- {
- TermsFilter tf = new TermsFilter();
- String text = DOMUtils.getNonBlankTextOrFail(e);
- String fieldName = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
-
- try
- {
- TokenStream ts = analyzer.reusableTokenStream(fieldName, new StringReader(text));
- TermToBytesRefAttribute termAtt = ts.addAttribute(TermToBytesRefAttribute.class);
- Term term = null;
+public class TermsFilterBuilder implements FilterBuilder {
+
+ private final Analyzer analyzer;
+
+ /**
+ * @param analyzer
+ */
+ public TermsFilterBuilder(Analyzer analyzer) {
+ this.analyzer = analyzer;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.apache.lucene.xmlparser.FilterBuilder#process(org.w3c.dom.Element)
+ */
+ public Filter getFilter(Element e) throws ParserException {
+ TermsFilter tf = new TermsFilter();
+ String text = DOMUtils.getNonBlankTextOrFail(e);
+ String fieldName = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
+
+ try {
+ TokenStream ts = analyzer.reusableTokenStream(fieldName, new StringReader(text));
+ TermToBytesRefAttribute termAtt = ts.addAttribute(TermToBytesRefAttribute.class);
+ Term term = null;
BytesRef bytes = termAtt.getBytesRef();
ts.reset();
- while (ts.incrementToken()) {
- termAtt.fillBytesRef();
- term = new Term(fieldName, new BytesRef(bytes));
- tf.addTerm(term);
- }
- ts.end();
- ts.close();
- }
- catch (IOException ioe)
- {
- throw new RuntimeException("Error constructing terms from index:"
- + ioe);
- }
- return tf;
- }
+ while (ts.incrementToken()) {
+ termAtt.fillBytesRef();
+ term = new Term(fieldName, new BytesRef(bytes));
+ tf.addTerm(term);
+ }
+ ts.end();
+ ts.close();
+ }
+ catch (IOException ioe) {
+ throw new RuntimeException("Error constructing terms from index:" + ioe);
+ }
+ return tf;
+ }
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/TermsQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/TermsQueryBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/TermsQueryBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/TermsQueryBuilder.java Tue Aug 23 14:06:58 2011
@@ -1,8 +1,5 @@
package org.apache.lucene.xmlparser.builders;
-import java.io.IOException;
-import java.io.StringReader;
-
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.TokenStream;
import org.apache.lucene.analysis.tokenattributes.TermToBytesRefAttribute;
@@ -17,6 +14,9 @@ import org.apache.lucene.xmlparser.Parse
import org.apache.lucene.xmlparser.QueryBuilder;
import org.w3c.dom.Element;
+import java.io.IOException;
+import java.io.StringReader;
+
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -33,52 +33,44 @@ import org.w3c.dom.Element;
* See the License for the specific language governing permissions and
* limitations under the License.
*/
+
/**
* Builds a BooleanQuery from all of the terms found in the XML element using the choice of analyzer
*/
public class TermsQueryBuilder implements QueryBuilder {
- Analyzer analyzer;
-
-
- public TermsQueryBuilder(Analyzer analyzer)
- {
- this.analyzer = analyzer;
- }
-
-
+ private final Analyzer analyzer;
- public Query getQuery(Element e) throws ParserException {
-
- String fieldName=DOMUtils.getAttributeWithInheritanceOrFail(e,"fieldName");
- String text=DOMUtils.getNonBlankTextOrFail(e);
-
- BooleanQuery bq=new BooleanQuery(DOMUtils.getAttribute(e,"disableCoord",false));
- bq.setMinimumNumberShouldMatch(DOMUtils.getAttribute(e,"minimumNumberShouldMatch",0));
- try
- {
- TokenStream ts = analyzer.reusableTokenStream(fieldName, new StringReader(text));
- TermToBytesRefAttribute termAtt = ts.addAttribute(TermToBytesRefAttribute.class);
- Term term = null;
+ public TermsQueryBuilder(Analyzer analyzer) {
+ this.analyzer = analyzer;
+ }
+
+ public Query getQuery(Element e) throws ParserException {
+ String fieldName = DOMUtils.getAttributeWithInheritanceOrFail(e, "fieldName");
+ String text = DOMUtils.getNonBlankTextOrFail(e);
+
+ BooleanQuery bq = new BooleanQuery(DOMUtils.getAttribute(e, "disableCoord", false));
+ bq.setMinimumNumberShouldMatch(DOMUtils.getAttribute(e, "minimumNumberShouldMatch", 0));
+ try {
+ TokenStream ts = analyzer.reusableTokenStream(fieldName, new StringReader(text));
+ TermToBytesRefAttribute termAtt = ts.addAttribute(TermToBytesRefAttribute.class);
+ Term term = null;
BytesRef bytes = termAtt.getBytesRef();
ts.reset();
- while (ts.incrementToken()) {
+ while (ts.incrementToken()) {
termAtt.fillBytesRef();
term = new Term(fieldName, new BytesRef(bytes));
- bq.add(new BooleanClause(new TermQuery(term),BooleanClause.Occur.SHOULD));
- }
- ts.end();
- ts.close();
- }
- catch (IOException ioe)
- {
- throw new RuntimeException("Error constructing terms from index:"
- + ioe);
- }
- bq.setBoost(DOMUtils.getAttribute(e,"boost",1.0f));
-
- return bq;
-
- }
+ bq.add(new BooleanClause(new TermQuery(term), BooleanClause.Occur.SHOULD));
+ }
+ ts.end();
+ ts.close();
+ }
+ catch (IOException ioe) {
+ throw new RuntimeException("Error constructing terms from index:" + ioe);
+ }
+
+ bq.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
+ return bq;
+ }
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/UserInputQueryBuilder.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/UserInputQueryBuilder.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/UserInputQueryBuilder.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/java/org/apache/lucene/xmlparser/builders/UserInputQueryBuilder.java Tue Aug 23 14:06:58 2011
@@ -4,11 +4,11 @@ import org.apache.lucene.analysis.Analyz
import org.apache.lucene.queryparser.classic.ParseException;
import org.apache.lucene.queryparser.classic.QueryParser;
import org.apache.lucene.search.Query;
+import org.apache.lucene.util.Version;
import org.apache.lucene.xmlparser.DOMUtils;
import org.apache.lucene.xmlparser.ParserException;
import org.apache.lucene.xmlparser.QueryBuilder;
import org.w3c.dom.Element;
-import org.apache.lucene.util.Version;
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
@@ -35,61 +35,59 @@ import org.apache.lucene.util.Version;
*/
public class UserInputQueryBuilder implements QueryBuilder {
- QueryParser unSafeParser;
- private Analyzer analyzer;
- private String defaultField;
-
- /**
- * This constructor has the disadvantage of not being able to change choice of default field name
- * @param parser thread un-safe query parser
- */
- public UserInputQueryBuilder(QueryParser parser) {
- this.unSafeParser = parser;
- }
+ private QueryParser unSafeParser;
+ private Analyzer analyzer;
+ private String defaultField;
- public UserInputQueryBuilder(String defaultField, Analyzer analyzer) {
- this.analyzer = analyzer;
- this.defaultField = defaultField;
- }
-
- /* (non-Javadoc)
- * @see org.apache.lucene.xmlparser.QueryObjectBuilder#process(org.w3c.dom.Element)
- */
- public Query getQuery(Element e) throws ParserException {
- String text=DOMUtils.getText(e);
- try {
- Query q = null;
- if(unSafeParser!=null)
- {
- //synchronize on unsafe parser
- synchronized (unSafeParser)
- {
- q = unSafeParser.parse(text);
- }
- }
- else
- {
- String fieldName=DOMUtils.getAttribute(e, "fieldName", defaultField);
- //Create new parser
- QueryParser parser=createQueryParser(fieldName, analyzer);
- q = parser.parse(text);
- }
- q.setBoost(DOMUtils.getAttribute(e,"boost",1.0f));
- return q;
- } catch (ParseException e1) {
- throw new ParserException(e1.getMessage());
- }
- }
-
- /**
- * Method to create a QueryParser - designed to be overridden
- * @param fieldName
- * @param analyzer
- * @return QueryParser
- */
- protected QueryParser createQueryParser(String fieldName, Analyzer analyzer)
- {
- return new QueryParser(Version.LUCENE_CURRENT, fieldName,analyzer);
+ /**
+ * This constructor has the disadvantage of not being able to change choice of default field name
+ *
+ * @param parser thread un-safe query parser
+ */
+ public UserInputQueryBuilder(QueryParser parser) {
+ this.unSafeParser = parser;
+ }
+
+ public UserInputQueryBuilder(String defaultField, Analyzer analyzer) {
+ this.analyzer = analyzer;
+ this.defaultField = defaultField;
+ }
+
+ /* (non-Javadoc)
+ * @see org.apache.lucene.xmlparser.QueryObjectBuilder#process(org.w3c.dom.Element)
+ */
+
+ public Query getQuery(Element e) throws ParserException {
+ String text = DOMUtils.getText(e);
+ try {
+ Query q = null;
+ if (unSafeParser != null) {
+ //synchronize on unsafe parser
+ synchronized (unSafeParser) {
+ q = unSafeParser.parse(text);
+ }
+ } else {
+ String fieldName = DOMUtils.getAttribute(e, "fieldName", defaultField);
+ //Create new parser
+ QueryParser parser = createQueryParser(fieldName, analyzer);
+ q = parser.parse(text);
+ }
+ q.setBoost(DOMUtils.getAttribute(e, "boost", 1.0f));
+ return q;
+ } catch (ParseException e1) {
+ throw new ParserException(e1.getMessage());
+ }
+ }
+
+ /**
+ * Method to create a QueryParser - designed to be overridden
+ *
+ * @param fieldName
+ * @param analyzer
+ * @return QueryParser
+ */
+ protected QueryParser createQueryParser(String fieldName, Analyzer analyzer) {
+ return new QueryParser(Version.LUCENE_CURRENT, fieldName, analyzer);
}
}
Modified: lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/test/org/apache/lucene/xmlparser/TestParser.java
URL: http://svn.apache.org/viewvc/lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/test/org/apache/lucene/xmlparser/TestParser.java?rev=1160700&r1=1160699&r2=1160700&view=diff
==============================================================================
--- lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/test/org/apache/lucene/xmlparser/TestParser.java (original)
+++ lucene/dev/branches/flexscoring/lucene/contrib/xml-query-parser/src/test/org/apache/lucene/xmlparser/TestParser.java Tue Aug 23 14:06:58 2011
@@ -1,10 +1,5 @@
package org.apache.lucene.xmlparser;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.analysis.MockAnalyzer;
import org.apache.lucene.analysis.MockTokenFilter;
@@ -18,11 +13,17 @@ import org.apache.lucene.search.Query;
import org.apache.lucene.search.ScoreDoc;
import org.apache.lucene.search.TopDocs;
import org.apache.lucene.store.Directory;
-import org.apache.lucene.util.Version;
import org.apache.lucene.util.LuceneTestCase;
+import org.apache.lucene.util.Version;
import org.junit.AfterClass;
import org.junit.Assume;
import org.junit.BeforeClass;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -30,9 +31,9 @@ import org.junit.BeforeClass;
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
+ * <p/>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p/>
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -41,200 +42,185 @@ import org.junit.BeforeClass;
*/
public class TestParser extends LuceneTestCase {
- private static CoreParser builder;
- private static Directory dir;
- private static IndexReader reader;
- private static IndexSearcher searcher;
-
- @BeforeClass
- public static void beforeClass() throws Exception {
- // TODO: rewrite test (this needs to set QueryParser.enablePositionIncrements, too, for work with CURRENT):
- Analyzer analyzer=new MockAnalyzer(random, MockTokenizer.WHITESPACE, true, MockTokenFilter.ENGLISH_STOPSET, false);
+
+ private static CoreParser builder;
+ private static Directory dir;
+ private static IndexReader reader;
+ private static IndexSearcher searcher;
+
+ @BeforeClass
+ public static void beforeClass() throws Exception {
+ // TODO: rewrite test (this needs to set QueryParser.enablePositionIncrements, too, for work with CURRENT):
+ Analyzer analyzer = new MockAnalyzer(random, MockTokenizer.WHITESPACE, true, MockTokenFilter.ENGLISH_STOPSET, false);
//initialize the parser
- builder=new CorePlusExtensionsParser("contents",analyzer);
-
- BufferedReader d = new BufferedReader(new InputStreamReader(TestParser.class.getResourceAsStream("reuters21578.txt")));
- dir=newDirectory();
- IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(Version.LUCENE_40, analyzer));
- String line = d.readLine();
- while(line!=null)
- {
- int endOfDate=line.indexOf('\t');
- String date=line.substring(0,endOfDate).trim();
- String content=line.substring(endOfDate).trim();
- org.apache.lucene.document.Document doc =new org.apache.lucene.document.Document();
- doc.add(newField("date",date,Field.Store.YES,Field.Index.ANALYZED));
- doc.add(newField("contents",content,Field.Store.YES,Field.Index.ANALYZED));
- NumericField numericField = new NumericField("date2");
- numericField.setIntValue(Integer.valueOf(date));
- doc.add(numericField);
- writer.addDocument(doc);
- line=d.readLine();
- }
- d.close();
- writer.close();
- reader=IndexReader.open(dir, true);
- searcher=newSearcher(reader);
-
- }
-
-
-
-
- @AfterClass
- public static void afterClass() throws Exception {
- reader.close();
- searcher.close();
- dir.close();
- reader = null;
- searcher = null;
- dir = null;
- builder = null;
- }
-
- public void testSimpleXML() throws ParserException, IOException
- {
- Query q=parse("TermQuery.xml");
- dumpResults("TermQuery", q, 5);
- }
- public void testSimpleTermsQueryXML() throws ParserException, IOException
- {
- Query q=parse("TermsQuery.xml");
- dumpResults("TermsQuery", q, 5);
- }
- public void testBooleanQueryXML() throws ParserException, IOException
- {
- Query q=parse("BooleanQuery.xml");
- dumpResults("BooleanQuery", q, 5);
- }
- public void testRangeFilterQueryXML() throws ParserException, IOException
- {
- Query q=parse("RangeFilterQuery.xml");
- dumpResults("RangeFilter", q, 5);
- }
- public void testUserQueryXML() throws ParserException, IOException
- {
- Query q=parse("UserInputQuery.xml");
- dumpResults("UserInput with Filter", q, 5);
- }
-
- public void testCustomFieldUserQueryXML() throws ParserException, IOException
- {
- Query q=parse("UserInputQueryCustomField.xml");
- int h = searcher.search(q, null, 1000).totalHits;
- assertEquals("UserInputQueryCustomField should produce 0 result ", 0,h);
- }
-
- public void testLikeThisQueryXML() throws Exception
- {
- Query q=parse("LikeThisQuery.xml");
- dumpResults("like this", q, 5);
- }
- public void testBoostingQueryXML() throws Exception
- {
- Query q=parse("BoostingQuery.xml");
- dumpResults("boosting ",q, 5);
- }
- public void testFuzzyLikeThisQueryXML() throws Exception
- {
- Query q=parse("FuzzyLikeThisQuery.xml");
- //show rewritten fuzzyLikeThisQuery - see what is being matched on
- if(VERBOSE)
- {
- System.out.println(q.rewrite(reader));
- }
- dumpResults("FuzzyLikeThis", q, 5);
- }
- public void testTermsFilterXML() throws Exception
- {
- Query q=parse("TermsFilterQuery.xml");
- dumpResults("Terms Filter",q, 5);
- }
- public void testBoostingTermQueryXML() throws Exception
- {
- Query q=parse("BoostingTermQuery.xml");
- dumpResults("BoostingTermQuery",q, 5);
- }
- public void testSpanTermXML() throws Exception
- {
- Query q=parse("SpanQuery.xml");
- dumpResults("Span Query",q, 5);
- }
- public void testConstantScoreQueryXML() throws Exception
- {
- Query q=parse("ConstantScoreQuery.xml");
- dumpResults("ConstantScoreQuery",q, 5);
- }
- public void testMatchAllDocsPlusFilterXML() throws ParserException, IOException
- {
- Query q=parse("MatchAllDocsQuery.xml");
- dumpResults("MatchAllDocsQuery with range filter", q, 5);
- }
- public void testBooleanFilterXML() throws ParserException, IOException
- {
- Query q=parse("BooleanFilter.xml");
- dumpResults("Boolean filter", q, 5);
- }
- public void testNestedBooleanQuery() throws ParserException, IOException
- {
- Query q=parse("NestedBooleanQuery.xml");
- dumpResults("Nested Boolean query", q, 5);
- }
- public void testCachedFilterXML() throws ParserException, IOException
- {
- Query q=parse("CachedFilter.xml");
- dumpResults("Cached filter", q, 5);
- }
- public void testDuplicateFilterQueryXML() throws ParserException, IOException
- {
- Assume.assumeTrue(searcher.getIndexReader().getSequentialSubReaders() == null ||
- searcher.getIndexReader().getSequentialSubReaders().length == 1);
- Query q=parse("DuplicateFilterQuery.xml");
- int h = searcher.search(q, null, 1000).totalHits;
- assertEquals("DuplicateFilterQuery should produce 1 result ", 1,h);
- }
-
- public void testNumericRangeFilterQueryXML() throws ParserException, IOException
- {
- Query q=parse("NumericRangeFilterQuery.xml");
- dumpResults("NumericRangeFilter", q, 5);
- }
-
- public void testNumericRangeQueryQueryXML() throws ParserException, IOException
- {
- Query q=parse("NumericRangeQueryQuery.xml");
- dumpResults("NumericRangeQuery", q, 5);
- }
-
-
-
- //================= Helper methods ===================================
- private Query parse(String xmlFileName) throws ParserException, IOException
- {
- InputStream xmlStream=TestParser.class.getResourceAsStream(xmlFileName);
- Query result=builder.parse(xmlStream);
- xmlStream.close();
- return result;
- }
- private void dumpResults(String qType,Query q, int numDocs) throws IOException
- {
- if (VERBOSE) {
- System.out.println("TEST: query=" + q);
- }
- TopDocs hits = searcher.search(q, null, numDocs);
- assertTrue(qType +" should produce results ", hits.totalHits>0);
- if(VERBOSE)
- {
- System.out.println("========="+qType+"============");
- ScoreDoc[] scoreDocs = hits.scoreDocs;
- for(int i=0;i<Math.min(numDocs,hits.totalHits);i++)
- {
- org.apache.lucene.document.Document ldoc=searcher.doc(scoreDocs[i].doc);
- System.out.println("["+ldoc.get("date")+"]"+ldoc.get("contents"));
- }
- System.out.println();
- }
- }
-
+ builder = new CorePlusExtensionsParser("contents", analyzer);
+ BufferedReader d = new BufferedReader(new InputStreamReader(TestParser.class.getResourceAsStream("reuters21578.txt")));
+ dir = newDirectory();
+ IndexWriter writer = new IndexWriter(dir, newIndexWriterConfig(Version.LUCENE_40, analyzer));
+ String line = d.readLine();
+ while (line != null) {
+ int endOfDate = line.indexOf('\t');
+ String date = line.substring(0, endOfDate).trim();
+ String content = line.substring(endOfDate).trim();
+ org.apache.lucene.document.Document doc = new org.apache.lucene.document.Document();
+ doc.add(newField("date", date, Field.Store.YES, Field.Index.ANALYZED));
+ doc.add(newField("contents", content, Field.Store.YES, Field.Index.ANALYZED));
+ NumericField numericField = new NumericField("date2");
+ numericField.setIntValue(Integer.valueOf(date));
+ doc.add(numericField);
+ writer.addDocument(doc);
+ line = d.readLine();
+ }
+ d.close();
+ writer.close();
+ reader = IndexReader.open(dir, true);
+ searcher = newSearcher(reader);
+
+ }
+
+ @AfterClass
+ public static void afterClass() throws Exception {
+ reader.close();
+ searcher.close();
+ dir.close();
+ reader = null;
+ searcher = null;
+ dir = null;
+ builder = null;
+ }
+
+ public void testSimpleXML() throws ParserException, IOException {
+ Query q = parse("TermQuery.xml");
+ dumpResults("TermQuery", q, 5);
+ }
+
+ public void testSimpleTermsQueryXML() throws ParserException, IOException {
+ Query q = parse("TermsQuery.xml");
+ dumpResults("TermsQuery", q, 5);
+ }
+
+ public void testBooleanQueryXML() throws ParserException, IOException {
+ Query q = parse("BooleanQuery.xml");
+ dumpResults("BooleanQuery", q, 5);
+ }
+
+ public void testRangeFilterQueryXML() throws ParserException, IOException {
+ Query q = parse("RangeFilterQuery.xml");
+ dumpResults("RangeFilter", q, 5);
+ }
+
+ public void testUserQueryXML() throws ParserException, IOException {
+ Query q = parse("UserInputQuery.xml");
+ dumpResults("UserInput with Filter", q, 5);
+ }
+
+ public void testCustomFieldUserQueryXML() throws ParserException, IOException {
+ Query q = parse("UserInputQueryCustomField.xml");
+ int h = searcher.search(q, null, 1000).totalHits;
+ assertEquals("UserInputQueryCustomField should produce 0 result ", 0, h);
+ }
+
+ public void testLikeThisQueryXML() throws Exception {
+ Query q = parse("LikeThisQuery.xml");
+ dumpResults("like this", q, 5);
+ }
+
+ public void testBoostingQueryXML() throws Exception {
+ Query q = parse("BoostingQuery.xml");
+ dumpResults("boosting ", q, 5);
+ }
+
+ public void testFuzzyLikeThisQueryXML() throws Exception {
+ Query q = parse("FuzzyLikeThisQuery.xml");
+ //show rewritten fuzzyLikeThisQuery - see what is being matched on
+ if (VERBOSE) {
+ System.out.println(q.rewrite(reader));
+ }
+ dumpResults("FuzzyLikeThis", q, 5);
+ }
+
+ public void testTermsFilterXML() throws Exception {
+ Query q = parse("TermsFilterQuery.xml");
+ dumpResults("Terms Filter", q, 5);
+ }
+
+ public void testBoostingTermQueryXML() throws Exception {
+ Query q = parse("BoostingTermQuery.xml");
+ dumpResults("BoostingTermQuery", q, 5);
+ }
+
+ public void testSpanTermXML() throws Exception {
+ Query q = parse("SpanQuery.xml");
+ dumpResults("Span Query", q, 5);
+ }
+
+ public void testConstantScoreQueryXML() throws Exception {
+ Query q = parse("ConstantScoreQuery.xml");
+ dumpResults("ConstantScoreQuery", q, 5);
+ }
+
+ public void testMatchAllDocsPlusFilterXML() throws ParserException, IOException {
+ Query q = parse("MatchAllDocsQuery.xml");
+ dumpResults("MatchAllDocsQuery with range filter", q, 5);
+ }
+
+ public void testBooleanFilterXML() throws ParserException, IOException {
+ Query q = parse("BooleanFilter.xml");
+ dumpResults("Boolean filter", q, 5);
+ }
+
+ public void testNestedBooleanQuery() throws ParserException, IOException {
+ Query q = parse("NestedBooleanQuery.xml");
+ dumpResults("Nested Boolean query", q, 5);
+ }
+
+ public void testCachedFilterXML() throws ParserException, IOException {
+ Query q = parse("CachedFilter.xml");
+ dumpResults("Cached filter", q, 5);
+ }
+
+ public void testDuplicateFilterQueryXML() throws ParserException, IOException {
+ Assume.assumeTrue(searcher.getIndexReader().getSequentialSubReaders() == null ||
+ searcher.getIndexReader().getSequentialSubReaders().length == 1);
+ Query q = parse("DuplicateFilterQuery.xml");
+ int h = searcher.search(q, null, 1000).totalHits;
+ assertEquals("DuplicateFilterQuery should produce 1 result ", 1, h);
+ }
+
+ public void testNumericRangeFilterQueryXML() throws ParserException, IOException {
+ Query q = parse("NumericRangeFilterQuery.xml");
+ dumpResults("NumericRangeFilter", q, 5);
+ }
+
+ public void testNumericRangeQueryQueryXML() throws ParserException, IOException {
+ Query q = parse("NumericRangeQueryQuery.xml");
+ dumpResults("NumericRangeQuery", q, 5);
+ }
+
+ //================= Helper methods ===================================
+
+ private Query parse(String xmlFileName) throws ParserException, IOException {
+ InputStream xmlStream = TestParser.class.getResourceAsStream(xmlFileName);
+ Query result = builder.parse(xmlStream);
+ xmlStream.close();
+ return result;
+ }
+
+ private void dumpResults(String qType, Query q, int numDocs) throws IOException {
+ if (VERBOSE) {
+ System.out.println("TEST: query=" + q);
+ }
+ TopDocs hits = searcher.search(q, null, numDocs);
+ assertTrue(qType + " should produce results ", hits.totalHits > 0);
+ if (VERBOSE) {
+ System.out.println("=========" + qType + "============");
+ ScoreDoc[] scoreDocs = hits.scoreDocs;
+ for (int i = 0; i < Math.min(numDocs, hits.totalHits); i++) {
+ org.apache.lucene.document.Document ldoc = searcher.doc(scoreDocs[i].doc);
+ System.out.println("[" + ldoc.get("date") + "]" + ldoc.get("contents"));
+ }
+ System.out.println();
+ }
+ }
}