/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with this * work for additional information regarding copyright ownership. 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 * * 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. See the * License for the specific language governing permissions and limitations under * the License. */ package org.xcmis.search.query.content; import static org.junit.Assert.assertTrue; import org.junit.Test; import org.xcmis.search.InvalidQueryException; import org.xcmis.search.model.Query; import org.xcmis.search.query.QueryExecutionException; import org.xcmis.search.result.ScoredRow; import java.util.List; /** * <code>FullTextSearchScoreTest</code> contains fulltext search score tests. */ public class FullTextSearchScoreTest extends AbstractQOMTest { private static final String TEXT = "the quick brown fox jumps over the lazy dog."; public void setUp() throws Exception { super.setUp(); Node n1 = testRootNode.addNode(nodeName1, testNodeType); n1.setProperty(propertyName1, TEXT); Node n2 = testRootNode.addNode(nodeName2, testNodeType); n2.setProperty(propertyName1, TEXT); n2.setProperty(propertyName2, TEXT); save(testRootNode); } @Test public void testOrdering() throws QueryExecutionException, InvalidQueryException { Query query = qf.from(testNodeType + " AS s").where().search("s", "'fox'").and().isBelowPath("s", testRootNode.getPath()) .end().orderBy().ascending().fullTextSearchScore("s").end().query(); List<ScoredRow> result = searchService.execute(query); double previousScore = Double.NaN; for (ScoredRow scoredRow : result) { double score = scoredRow.getScore(); if (!Double.isNaN(previousScore)) { assertTrue("wrong order", previousScore <= score); } previousScore = score; } } //TODO implement fullTextSearchScore //@Test public void testConstraint() throws QueryExecutionException, InvalidQueryException { Query query = qf.from(testNodeType + " AS s").where().search("s", "'fox'").and().fullTextSearchScore("s").isGreaterThan() .literal(Double.MIN_VALUE).end().orderBy().descending().fullTextSearchScore("s").end().query(); List<ScoredRow> result = searchService.execute(query); double previousScore = Double.NaN; for (ScoredRow scoredRow : result) { double score = scoredRow.getScore(); if (!Double.isNaN(previousScore)) { assertTrue("wrong full text search score", Double.MIN_VALUE < score); } previousScore = score; } } }