Search in sources :

Example 6 with LindenBooleanFilter

use of com.xiaomi.linden.thrift.common.LindenBooleanFilter in project linden by XiaoMi.

the class TestBQL method testEqualPredicate.

@Test
public void testEqualPredicate() {
    String bql = "select * from linden where title = \"qq\" and id = 211 limit 10, 50";
    LindenSearchRequest lindenRequest = compiler.compile(bql).getSearchRequest();
    Assert.assertTrue(lindenRequest.getFilter().isSetBooleanFilter());
    LindenBooleanFilter booleanFilter = lindenRequest.getFilter().getBooleanFilter();
    Assert.assertEquals(2, booleanFilter.getFiltersSize());
    Assert.assertEquals(LindenBooleanClause.MUST, booleanFilter.getFilters().get(0).getClause());
    Assert.assertEquals(new LindenTerm("title", "qq"), booleanFilter.getFilters().get(0).getFilter().getTermFilter().getTerm());
    Assert.assertEquals(LindenBooleanClause.MUST, booleanFilter.getFilters().get(1).getClause());
    Assert.assertEquals(new LindenRange("id", LindenType.LONG, true, true).setStartValue("211").setEndValue("211"), booleanFilter.getFilters().get(1).getFilter().getRangeFilter().getRange());
    Assert.assertEquals(10, lindenRequest.getOffset());
    Assert.assertEquals(50, lindenRequest.getLength());
    bql = "delete from default where title = \"q\"\"q\" and id = 211";
    LindenDeleteRequest deleteRequest = compiler.compile(bql).getDeleteRequest();
    Assert.assertTrue(deleteRequest.getQuery().isSetFilteredQuery());
    Assert.assertTrue(deleteRequest.getQuery().getFilteredQuery().isSetLindenFilter());
    Assert.assertTrue(deleteRequest.getQuery().getFilteredQuery().getLindenFilter().isSetBooleanFilter());
    booleanFilter = deleteRequest.getQuery().getFilteredQuery().getLindenFilter().getBooleanFilter();
    Assert.assertEquals(2, booleanFilter.getFiltersSize());
    Assert.assertEquals(LindenBooleanClause.MUST, booleanFilter.getFilters().get(0).getClause());
    Assert.assertEquals(new LindenTerm("title", "q\"q"), booleanFilter.getFilters().get(0).getFilter().getTermFilter().getTerm());
    Assert.assertEquals(LindenBooleanClause.MUST, booleanFilter.getFilters().get(1).getClause());
    Assert.assertEquals(new LindenRange("id", LindenType.LONG, true, true).setStartValue("211").setEndValue("211"), booleanFilter.getFilters().get(1).getFilter().getRangeFilter().getRange());
    bql = "delete from default where title = $a and id = 211";
    deleteRequest = compiler.compile(bql).getDeleteRequest();
    Assert.assertTrue(deleteRequest.getQuery().isSetFilteredQuery());
    Assert.assertTrue(deleteRequest.getQuery().getFilteredQuery().isSetLindenFilter());
    Assert.assertTrue(deleteRequest.getQuery().getFilteredQuery().getLindenFilter().isSetRangeFilter());
    bql = "select * from linden where dynmaicTitle.STRING = \"qq\" and dynamicId.int = 211 limit 10, 50";
    lindenRequest = compiler.compile(bql).getSearchRequest();
    Assert.assertTrue(lindenRequest.getFilter().isSetBooleanFilter());
    booleanFilter = lindenRequest.getFilter().getBooleanFilter();
    Assert.assertEquals(2, booleanFilter.getFiltersSize());
    Assert.assertEquals(LindenBooleanClause.MUST, booleanFilter.getFilters().get(0).getClause());
    Assert.assertEquals(new LindenTerm("dynmaicTitle", "qq"), booleanFilter.getFilters().get(0).getFilter().getTermFilter().getTerm());
    Assert.assertEquals(LindenBooleanClause.MUST, booleanFilter.getFilters().get(1).getClause());
    Assert.assertEquals(new LindenRange("dynamicId", LindenType.INTEGER, true, true).setStartValue("211").setEndValue("211"), booleanFilter.getFilters().get(1).getFilter().getRangeFilter().getRange());
    Assert.assertEquals(10, lindenRequest.getOffset());
    Assert.assertEquals(50, lindenRequest.getLength());
    bql = "select * from linden by title = \"qq\" subBoost by 0.5 and id = 211 andDisableCoord limit 10, 50";
    lindenRequest = compiler.compile(bql).getSearchRequest();
    Assert.assertFalse(lindenRequest.isSetFilter());
    Assert.assertTrue(lindenRequest.getQuery().isSetBooleanQuery());
    LindenBooleanQuery query = lindenRequest.getQuery().getBooleanQuery();
    Assert.assertTrue(query.isDisableCoord());
    Assert.assertEquals(2, query.getQueriesSize());
    Assert.assertEquals(LindenBooleanClause.MUST, query.getQueries().get(0).clause);
    Assert.assertEquals(new LindenTerm("title", "qq"), query.getQueries().get(0).getQuery().getTermQuery().getTerm());
    Assert.assertEquals(0.5, query.getQueries().get(0).getQuery().getBoost(), 0.001);
    Assert.assertEquals(LindenBooleanClause.MUST, query.getQueries().get(1).clause);
    Assert.assertEquals(new LindenRange("id", LindenType.LONG, true, true).setStartValue("211").setEndValue("211"), query.getQueries().get(1).getQuery().getRangeQuery().getRange());
    Assert.assertEquals(10, lindenRequest.getOffset());
    Assert.assertEquals(50, lindenRequest.getLength());
}
Also used : LindenBooleanQuery(com.xiaomi.linden.thrift.common.LindenBooleanQuery) LindenDeleteRequest(com.xiaomi.linden.thrift.common.LindenDeleteRequest) LindenBooleanFilter(com.xiaomi.linden.thrift.common.LindenBooleanFilter) LindenTerm(com.xiaomi.linden.thrift.common.LindenTerm) LindenRange(com.xiaomi.linden.thrift.common.LindenRange) LindenSearchRequest(com.xiaomi.linden.thrift.common.LindenSearchRequest) Test(org.junit.Test)

Aggregations

LindenBooleanFilter (com.xiaomi.linden.thrift.common.LindenBooleanFilter)6 LindenBooleanSubFilter (com.xiaomi.linden.thrift.common.LindenBooleanSubFilter)5 LindenFilter (com.xiaomi.linden.thrift.common.LindenFilter)5 LindenSearchRequest (com.xiaomi.linden.thrift.common.LindenSearchRequest)5 Test (org.junit.Test)5 LindenBooleanQueryBuilder (com.xiaomi.linden.thrift.builder.query.LindenBooleanQueryBuilder)4 LindenQuery (com.xiaomi.linden.thrift.common.LindenQuery)4 LindenWildcardQuery (com.xiaomi.linden.thrift.common.LindenWildcardQuery)3 LindenQueryFilter (com.xiaomi.linden.thrift.common.LindenQueryFilter)2 LindenTerm (com.xiaomi.linden.thrift.common.LindenTerm)2 LindenBooleanFilterBuilder (com.xiaomi.linden.thrift.builder.filter.LindenBooleanFilterBuilder)1 LindenBooleanQuery (com.xiaomi.linden.thrift.common.LindenBooleanQuery)1 LindenDeleteRequest (com.xiaomi.linden.thrift.common.LindenDeleteRequest)1 LindenFacet (com.xiaomi.linden.thrift.common.LindenFacet)1 LindenFacetDimAndPath (com.xiaomi.linden.thrift.common.LindenFacetDimAndPath)1 LindenFacetParam (com.xiaomi.linden.thrift.common.LindenFacetParam)1 LindenRange (com.xiaomi.linden.thrift.common.LindenRange)1 LindenType (com.xiaomi.linden.thrift.common.LindenType)1 AbstractMap (java.util.AbstractMap)1 HashMap (java.util.HashMap)1