Package com.gentics.cr.lucene.search.query

Source Code of com.gentics.cr.lucene.search.query.BooleanQueryRewriterTest

package com.gentics.cr.lucene.search.query;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;

import org.apache.lucene.analysis.standard.StandardAnalyzer;
import org.apache.lucene.document.Document;
import org.apache.lucene.index.CorruptIndexException;
import org.apache.lucene.index.Term;
import org.apache.lucene.queryParser.ParseException;
import org.apache.lucene.search.Query;

import com.gentics.cr.CRRequest;
import com.gentics.cr.lucene.AbstractLuceneTest;
import com.gentics.cr.lucene.LuceneVersion;
import com.gentics.cr.lucene.search.query.mocks.ComparableDocument;
import com.gentics.cr.lucene.search.query.mocks.SimpleLucene;

public class BooleanQueryRewriterTest extends AbstractLuceneTest {

  public BooleanQueryRewriterTest(String name) {
    super(name);
  }

  private static final StandardAnalyzer STANDARD_ANALYZER = new StandardAnalyzer(LuceneVersion.getVersion());
  private static final String[] SEARCHED_ATTRIBUTES = new String[] { SimpleLucene.CONTENT_ATTRIBUTE, "binarycontent" };
  private CRQueryParser parser;
  private CRRequest crRequest;
  private SimpleLucene lucene;
  private ArrayList<ComparableDocument> documents;

  @Override
  protected void setUp() throws Exception {
    super.setUp();
    parser = new CRQueryParser(LuceneVersion.getVersion(), SEARCHED_ATTRIBUTES, STANDARD_ANALYZER);
    crRequest = new CRRequest();
    lucene = new SimpleLucene();

    documents = new ArrayList<ComparableDocument>();
    /* 0 */documents.add(new ComparableDocument(lucene.add(
      SimpleLucene.CONTENT_ATTRIBUTE + ":word9 word1",
      "node_id:1")));
    /* 1 */documents.add(new ComparableDocument(lucene.add(
      SimpleLucene.CONTENT_ATTRIBUTE + ":word2 word9",
      "node_id:1")));
    /* 2 */documents.add(new ComparableDocument(lucene.add(
      SimpleLucene.CONTENT_ATTRIBUTE + ":word3",
      "binarycontent:word9",
      "node_id:2")));
    /* 3 */documents
        .add(new ComparableDocument(lucene.add(SimpleLucene.CONTENT_ATTRIBUTE + ":wörd4", "node_id:2")));
    /* 4 */documents.add(new ComparableDocument(lucene.add(
      SimpleLucene.CONTENT_ATTRIBUTE + ":word5",
      "updatetimestamp:1311604678",
      "edittimestamp:1311604678",
      "node_id:3"))); //25.07.2011 16:37:58
    /* 5 */documents.add(new ComparableDocument(lucene.add(
      SimpleLucene.CONTENT_ATTRIBUTE + ":word6",
      "updatetimestamp:1313160620",
      "edittimestamp:1313160620",
      "node_id:3"))); //12.08.2011 16:50:20
    /* 6 */documents.add(new ComparableDocument(lucene.add(
      SimpleLucene.CONTENT_ATTRIBUTE + ":word7",
      "updatetimestamp:1314627329",
      "edittimestamp:1314627329",
      "node_id:3"))); //29.08.2011 16:15:29
    /* 7 */documents.add(new ComparableDocument(lucene.add(
      SimpleLucene.CONTENT_ATTRIBUTE + ":word8",
      "updatetimestamp:1304510397",
      "edittimestamp:1304510397",
      "node_id:3"))); //04.05.2011 13:59:57
    /* 8 */documents.add(new ComparableDocument(lucene.add(
      SimpleLucene.CONTENT_ATTRIBUTE + ":newword",
      "node_id:11")));

  }

  public void testReplaceTerm() throws ParseException, CorruptIndexException, IOException {
    Query orginalQuery = parser.parse("word1 | word2");
    Query newQuery = BooleanQueryRewriter.replaceTerm(orginalQuery, new Term(SimpleLucene.CONTENT_ATTRIBUTE,
        "word1"), new Term(SimpleLucene.CONTENT_ATTRIBUTE, "word3"));

    Collection<ComparableDocument> matchedDocuments = wrapComparable(lucene.find(newQuery));
    containsAll(matchedDocuments, new ComparableDocument[] { documents.get(1), documents.get(2) });
  }

  public void testReplaceTerms() throws ParseException, CorruptIndexException, IOException {
    Query orginalQuery = parser.parse("word1 & word2");
    HashMap<Term, Term> replacements = new HashMap<Term, Term>();
    replacements.put(new Term(SimpleLucene.CONTENT_ATTRIBUTE, "word1"), new Term(SimpleLucene.CONTENT_ATTRIBUTE,
        "word3"));
    replacements.put(new Term("binarycontent", "word2"), new Term("binarycontent", "word9"));

    Query newQuery = BooleanQueryRewriter.replaceTerms(orginalQuery, replacements);

    Collection<ComparableDocument> matchedDocuments = wrapComparable(lucene.find(newQuery));
    containsOnly(matchedDocuments, documents.get(2));
  }
}
TOP

Related Classes of com.gentics.cr.lucene.search.query.BooleanQueryRewriterTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.