use of com.xiaomi.linden.thrift.common.LindenSearchRequest in project linden by XiaoMi.
the class TestBQL method testMultiSelect.
@Test
public void testMultiSelect() throws InterruptedException {
String bql = "select * from linden where title = 'qq' and id = 211 |" + " select * from linden where title = 'qm' and id = 211";
LindenSearchRequest lindenRequest = compiler.compile(bql).getSearchRequest();
Assert.assertTrue(lindenRequest.getQuery().isSetDisMaxQuery());
Assert.assertEquals(2, lindenRequest.getQuery().getDisMaxQuery().getQueriesSize());
}
use of com.xiaomi.linden.thrift.common.LindenSearchRequest in project linden by XiaoMi.
the class TestBQL method testEscapedColumnName.
@Test
public void testEscapedColumnName() {
String bql = "select * from linden where `select` = \"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("select", "qq"), booleanFilter.getFilters().get(0).getFilter().getTermFilter().getTerm());
bql = "SELECT * FROM linden WHERE `source` <> 'red'";
lindenRequest = compiler.compile(bql).getSearchRequest();
booleanFilter = new LindenBooleanFilter();
LindenFilter termFilter = LindenTermFilterBuilder.buildTermFilter("source", "red");
booleanFilter.addToFilters(new LindenBooleanSubFilter().setFilter(termFilter).setClause(LindenBooleanClause.MUST_NOT));
Assert.assertEquals(booleanFilter, lindenRequest.getFilter().getBooleanFilter());
bql = "select * from linden where `explain` in (1, 2, 3)";
lindenRequest = compiler.compile(bql).getSearchRequest();
LindenBooleanFilterBuilder builder = new LindenBooleanFilterBuilder();
builder.addFilter(LindenTermFilterBuilder.buildTermFilter("explain", "1"), LindenBooleanClause.SHOULD);
builder.addFilter(LindenTermFilterBuilder.buildTermFilter("explain", "2"), LindenBooleanClause.SHOULD);
builder.addFilter(LindenTermFilterBuilder.buildTermFilter("explain", "3"), LindenBooleanClause.SHOULD);
LindenFilter expected = builder.build();
Assert.assertEquals(expected, lindenRequest.getFilter());
bql = "SELECT * FROM linden WHERE `route` BETWEEN 'black' AND \"yellow\"";
lindenRequest = compiler.compile(bql).getSearchRequest();
LindenFilter filter = LindenRangeFilterBuilder.buildRangeFilter("route", LindenType.STRING, "black", "yellow", true, true);
Assert.assertEquals(filter, lindenRequest.getFilter());
bql = "SELECT `delete`, `score` FROM linden where title = 'sed' route by 0, 1, 2";
lindenRequest = compiler.compile(bql).getSearchRequest();
Assert.assertEquals(2, lindenRequest.getSourceFieldsSize());
Assert.assertEquals("delete", lindenRequest.getSourceFields().get(0));
Assert.assertEquals("score", lindenRequest.getSourceFields().get(1));
bql = "SELECT * FROM linden QUERY `FROM` LIKE 'sed*'";
lindenRequest = compiler.compile(bql).getSearchRequest();
LindenQuery query = new LindenQuery();
query.setWildcardQuery(new LindenWildcardQuery().setQuery("sed*").setField("FROM"));
Assert.assertEquals(query, lindenRequest.getQuery());
bql = "SELECT * FROM linden browse by `group`(5)";
lindenRequest = compiler.compile(bql).getSearchRequest();
LindenFacet facetRequest = new LindenFacet();
facetRequest.addToFacetParams(new LindenFacetParam().setTopN(5).setFacetDimAndPath(new LindenFacetDimAndPath().setDim("group")));
Assert.assertEquals(facetRequest, lindenRequest.getFacet());
bql = "SELECT title, rank FROM linden drill down `group`('big')";
lindenRequest = compiler.compile(bql).getSearchRequest();
facetRequest = new LindenFacet();
facetRequest.addToDrillDownDimAndPaths(new LindenFacetDimAndPath().setDim("group").setPath("big"));
Assert.assertEquals(facetRequest, lindenRequest.getFacet());
}
use of com.xiaomi.linden.thrift.common.LindenSearchRequest in project linden by XiaoMi.
the class TestBQL method testLikePredicate.
@Test
public void testLikePredicate() throws Exception {
String bql = "SELECT * FROM linden WHERE title LIKE 's?d*'";
LindenSearchRequest lindenRequest = compiler.compile(bql).getSearchRequest();
LindenFilter filter = new LindenFilter().setQueryFilter(new LindenQueryFilter().setQuery(new LindenQuery().setWildcardQuery(new LindenWildcardQuery().setQuery("s?d*").setField("title"))));
Assert.assertEquals(filter, lindenRequest.getFilter());
bql = "SELECT * FROM linden WHERE title NOT LIKE 'bl*'";
lindenRequest = compiler.compile(bql).getSearchRequest();
LindenQuery query = new LindenQuery();
query.setWildcardQuery(new LindenWildcardQuery().setQuery("bl*").setField("title"));
filter = new LindenFilter().setQueryFilter(new LindenQueryFilter().setQuery(query));
LindenBooleanFilter booleanFilter = new LindenBooleanFilter();
booleanFilter.addToFilters(new LindenBooleanSubFilter().setFilter(filter).setClause(LindenBooleanClause.MUST_NOT));
Assert.assertEquals(booleanFilter, lindenRequest.getFilter().getBooleanFilter());
bql = "SELECT * FROM linden WHERE title NOT LIKE $title";
lindenRequest = compiler.compile(bql).getSearchRequest();
Assert.assertEquals(null, lindenRequest.getFilter());
bql = "SELECT * FROM linden WHERE title LIKE $title";
lindenRequest = compiler.compile(bql).getSearchRequest();
Assert.assertEquals(null, lindenRequest.getFilter());
bql = "SELECT * FROM linden BY title LIKE 'sed*'";
lindenRequest = compiler.compile(bql).getSearchRequest();
query = new LindenQuery();
query.setWildcardQuery(new LindenWildcardQuery().setQuery("sed*").setField("title"));
Assert.assertEquals(query, lindenRequest.getQuery());
bql = "SELECT * FROM linden BY title NOT LIKE 'sed*'";
lindenRequest = compiler.compile(bql).getSearchRequest();
LindenBooleanQueryBuilder builder = new LindenBooleanQueryBuilder();
builder.addQuery(LindenRangeQueryBuilder.buildMatchAllQuery(), LindenBooleanClause.MUST);
builder.addQuery(new LindenQuery().setWildcardQuery(new LindenWildcardQuery().setQuery("sed*").setField("title")), LindenBooleanClause.MUST_NOT);
Assert.assertEquals(builder.build(), lindenRequest.getQuery());
bql = "SELECT * FROM linden BY title LIKE 'sed*' subBoost by 3";
lindenRequest = compiler.compile(bql).getSearchRequest();
query = new LindenQuery();
query.setWildcardQuery(new LindenWildcardQuery().setQuery("sed*").setField("title"));
query.setBoost(3);
Assert.assertEquals(query, lindenRequest.getQuery());
}
use of com.xiaomi.linden.thrift.common.LindenSearchRequest in project linden by XiaoMi.
the class TestBQL method testSelections.
@Test
public void testSelections() {
String bql = "SELECT title, rank FROM linden where title = 'sed' route by 0, 1, 2";
LindenSearchRequest lindenRequest = compiler.compile(bql).getSearchRequest();
Assert.assertEquals(2, lindenRequest.getSourceFieldsSize());
Assert.assertEquals("title", lindenRequest.getSourceFields().get(0));
Assert.assertEquals("rank", lindenRequest.getSourceFields().get(1));
}
use of com.xiaomi.linden.thrift.common.LindenSearchRequest in project linden by XiaoMi.
the class TestBQL method testReplicaRouteKey.
@Test
public void testReplicaRouteKey() {
String bql = "select * from linden where title = 'sed' route by replica_key 'nihao'";
LindenSearchRequest request = compiler.compile(bql).getSearchRequest();
Assert.assertEquals("nihao", request.getRouteParam().getReplicaRouteKey());
}
Aggregations