Package com.tistory.devyongsik.crescent.query

Source Code of com.tistory.devyongsik.crescent.query.CustomQueryStringParserTest

package com.tistory.devyongsik.crescent.query;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.annotation.PostConstruct;

import junit.framework.Assert;

import org.apache.lucene.index.Term;
import org.apache.lucene.search.BooleanClause.Occur;
import org.apache.lucene.search.BooleanQuery;
import org.apache.lucene.search.Filter;
import org.apache.lucene.search.NumericRangeQuery;
import org.apache.lucene.search.Query;
import org.apache.lucene.search.TermQuery;
import org.junit.Test;

import com.tistory.devyongsik.crescent.search.entity.SearchRequest;
import com.tistory.devyongsik.crescent.search.exception.CrescentInvalidRequestException;
import com.tistory.devyongsik.utils.CrescentTestCaseUtil;

public class CustomQueryStringParserTest extends CrescentTestCaseUtil {

  @PostConstruct
  public void init() {
    super.init();
  }

  @Test
  public void rangeQuery() throws CrescentInvalidRequestException {
    SearchRequest searchRequest = new SearchRequest();
    searchRequest.setCollectionName("sample");
    searchRequest.setCustomQuery("board_id:\"[10 TO 100000]\"");
   
    CrescentSearchRequestWrapper csrw
      = new CrescentSearchRequestWrapper(searchRequest);
   
    Query query = csrw.getQuery();
   
    System.out.println(query);
   
    Assert.assertEquals("board_id:[10 TO 100000]", query.toString());
  }
 
  @Test(expected = CrescentInvalidRequestException.class)
  public void rangeQueryNoSearchField() throws CrescentInvalidRequestException {
    SearchRequest searchRequest = new SearchRequest();
    searchRequest.setCollectionName("sample");
    searchRequest.setCustomQuery("field1:\"[10 TO 100000]\"");
   
    CrescentSearchRequestWrapper csrw
      = new CrescentSearchRequestWrapper(searchRequest);
   
    Query query = csrw.getQuery();
   
    System.out.println(query);
   
  }
 
  @Test
  public void normalTermQuery() throws CrescentInvalidRequestException {
    SearchRequest searchRequest = new SearchRequest();
    searchRequest.setCollectionName("sample");
    searchRequest.setCustomQuery("dscr:\"파이썬 프로그래밍 공부\"");
   
    CrescentSearchRequestWrapper csrw
      = new CrescentSearchRequestWrapper(searchRequest);
   
    Query query = csrw.getQuery();
   
    System.out.println(query);
   
    Assert.assertEquals("dscr:파이썬 dscr:파이 dscr:프로그래밍 dscr:공부", query.toString());
  }
 
  @Test
  public void normalTermQueryWithDefaultFieldBoost() throws CrescentInvalidRequestException {
    SearchRequest searchRequest = new SearchRequest();
    searchRequest.setCollectionName("sample");
    searchRequest.setCustomQuery("title:\"파이썬 프로그래밍 공부\"");
   
    CrescentSearchRequestWrapper csrw
      = new CrescentSearchRequestWrapper(searchRequest);
   
    Query query = csrw.getQuery();
   
    System.out.println(query);
   
    Assert.assertEquals("title:파이썬^2.0 title:파이^2.0 title:프로그래밍^2.0 title:공부^2.0", query.toString());
  }
 
  @Test
  public void multipleTermQueryWithDefaultFieldBoost() throws CrescentInvalidRequestException {
    SearchRequest searchRequest = new SearchRequest();
    searchRequest.setCollectionName("sample");
    searchRequest.setCustomQuery("title:\"파이썬 프로그래밍 공부\" +dscr:\"자바 병렬 프로그래밍\"");
   
    CrescentSearchRequestWrapper csrw
      = new CrescentSearchRequestWrapper(searchRequest);
   
    Query query = csrw.getQuery();
   
    System.out.println(query);
   
    Assert.assertEquals("title:파이썬^2.0 title:파이^2.0 title:프로그래밍^2.0 title:공부^2.0 +dscr:자바 +dscr:병렬 +dscr:프로그래밍", query.toString());
  }
 
  @Test
  public void normalTermQueryWithCustomBoost() throws CrescentInvalidRequestException {
    SearchRequest searchRequest = new SearchRequest();
    searchRequest.setCollectionName("sample");
    searchRequest.setCustomQuery("dscr:\"파이썬 프로그래밍 공부^10\"");
   
    CrescentSearchRequestWrapper csrw
      = new CrescentSearchRequestWrapper(searchRequest);
   
    Query query = csrw.getQuery();
   
    System.out.println(query);
   
    Assert.assertEquals("dscr:파이썬^10.0 dscr:파이^10.0 dscr:프로그래밍^10.0 dscr:공부^10.0", query.toString());
  }
 
  @Test
  public void normalTermQueryWithDefaultFieldBoostAndCustomBoost() throws CrescentInvalidRequestException {
    SearchRequest searchRequest = new SearchRequest();
    searchRequest.setCollectionName("sample");
    searchRequest.setCustomQuery("title:\"파이썬 프로그래밍 공부^10\" dscr:\"파이썬 프로그래밍 공부^10\"");
   
    CrescentSearchRequestWrapper csrw
      = new CrescentSearchRequestWrapper(searchRequest);
   
    Query query = csrw.getQuery();
   
    System.out.println(query);
   
    Assert.assertEquals("title:파이썬^12.0 title:파이^12.0 title:프로그래밍^12.0 title:공부^12.0 dscr:파이썬^10.0 dscr:파이^10.0 dscr:프로그래밍^10.0 dscr:공부^10.0", query.toString());
  }
 
  @Test(expected = CrescentInvalidRequestException.class)
  public void complexQueryWithDefaultFieldBoostAndCustomBoostException() throws CrescentInvalidRequestException {
    SearchRequest searchRequest = new SearchRequest();
    searchRequest.setCollectionName("sample");
    searchRequest.setCustomQuery("title:\"파이썬 프로그래밍 공부^10\" dscr:\"파이썬 프로그래밍 공부^10\" title:\"[50 TO 50000]\"");
   
    CrescentSearchRequestWrapper csrw
      = new CrescentSearchRequestWrapper(searchRequest);
   
    Query query = csrw.getQuery();
   
    System.out.println(query);
   
    Assert.assertEquals("title:파이썬^12.0 title:파이^12.0 title:프로그래밍^12.0 title:공부^12.0 dscr:파이썬^10.0 dscr:파이^10.0 dscr:프로그래밍^10.0 dscr:공부^10.0 title:[50 TO 50000]", query.toString());
  }
 
  @Test
  public void complexQueryWithDefaultFieldBoostAndCustomBoost() throws CrescentInvalidRequestException {
    SearchRequest searchRequest = new SearchRequest();
    searchRequest.setCollectionName("sample");
    searchRequest.setCustomQuery("title:\"파이썬 프로그래밍 공부^10\" dscr:\"파이썬 프로그래밍 공부^10\" board_id:\"[50 TO 50000]\"");
   
    CrescentSearchRequestWrapper csrw
      = new CrescentSearchRequestWrapper(searchRequest);
   
    Query query = csrw.getQuery();
   
    System.out.println(query);
   
    Assert.assertEquals("title:파이썬^12.0 title:파이^12.0 title:프로그래밍^12.0 title:공부^12.0 dscr:파이썬^10.0 dscr:파이^10.0 dscr:프로그래밍^10.0 dscr:공부^10.0 board_id:[50 TO 50000]", query.toString());
  }
 
  @Test
  public void filterQuery() throws CrescentInvalidRequestException {
    SearchRequest searchRequest = new SearchRequest();
    searchRequest.setCollectionName("sample");
    searchRequest.setFilter("title:\"python\"");
   
    CrescentSearchRequestWrapper csrw
      = new CrescentSearchRequestWrapper(searchRequest);
   
    Filter filter = csrw.getFilter();
   
    System.out.println(filter);
   
    Assert.assertEquals("QueryWrapperFilter(title:python^2.0)", filter.toString());
  }
 
  @Test
  public void sample() {
    BooleanQuery bq = new BooleanQuery();
   
    Query termQuery = new TermQuery(new Term("field", "파이썬 프로그래밍"));
    bq.add(termQuery, Occur.MUST);
   
    NumericRangeQuery<Integer> rangeQuery = NumericRangeQuery.newIntRange("field2", 0, 10, true, true);
   
    bq.add(rangeQuery, Occur.MUST);
   
    System.out.println(bq);
  }
 
  @Test
  public void patternMatch() {
    String query = "title:\"ab cd\" body:\"addd cd\" +price:\"[1000 to 10000]\" description:\"addd cd\"";
   
    Pattern pattern = Pattern.compile("(.*?)(:)(\".*?\")");
    Matcher m = pattern.matcher(query);
   
    while(m.find()) {
      //System.out.println(m.groupCount());
      System.out.println(m.group(0) + " , " + m.group(1) + " , " + m.group(2) + " , " + m.group(3));
     
    }
   
    System.out.println(m.groupCount());
  }
}
TOP

Related Classes of com.tistory.devyongsik.crescent.query.CustomQueryStringParserTest

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.