/* * Copyright 2004-2009 the original author or authors. * * Licensed 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.compass.core.test.termfreqs.simple; import org.compass.core.CompassSession; import org.compass.core.CompassTermFreq; import org.compass.core.CompassTermFreqsBuilder; import org.compass.core.CompassTransaction; import org.compass.core.test.AbstractTestCase; /** * @author kimchy */ public class SimpleTermFreqsTests extends AbstractTestCase { protected String[] getMappings() { return new String[]{"termfreqs/simple/mapping.cpm.xml"}; } public void testNoFreqs() { CompassSession session = openSession(); CompassTransaction tr = session.beginTransaction(); CompassTermFreq[] termFreqs = session.termFreqsBuilder("value2").toTermFreqs(); assertEquals(0, termFreqs.length); session.save(new A(1, "test")); termFreqs = session.termFreqsBuilder("value2").toTermFreqs(); assertEquals(0, termFreqs.length); tr.commit(); session.close(); } public void testSimpleFreqs() { CompassSession session = openSession(); CompassTransaction tr = session.beginTransaction(); session.save(new A(1, "bbb")); session.save(new A(2, "aaa")); session.save(new A(3, "bbb")); CompassTermFreq[] termFreqs = session.termFreqsBuilder("value").toTermFreqs(); assertEquals(2, termFreqs.length); assertEquals("bbb", termFreqs[0].getTerm()); assertEquals("value", termFreqs[0].getPropertyName()); assertEquals(2, (int) termFreqs[0].getFreq()); assertEquals("aaa", termFreqs[1].getTerm()); assertEquals(1, (int) termFreqs[1].getFreq()); assertEquals("value", termFreqs[1].getPropertyName()); tr.commit(); session.close(); // delete the second A session = openSession(); tr = session.beginTransaction(); session.delete(A.class, 2); termFreqs = session.termFreqsBuilder("value").toTermFreqs(); assertEquals(2, termFreqs.length); tr.commit(); session.close(); // only after optimization the term freqs are updated in Lucene getCompass().getSearchEngineOptimizer().optimize(1); // verify that the deletion affected the termFreqs session = openSession(); tr = session.beginTransaction(); A a = session.get(A.class, 2); assertNull(a); termFreqs = session.termFreqsBuilder("value").toTermFreqs(); assertEquals(1, termFreqs.length); tr.commit(); session.close(); } public void testSimpleFreqsSortTerm() { CompassSession session = openSession(); CompassTransaction tr = session.beginTransaction(); session.save(new A(1, "bbb")); session.save(new A(2, "aaa")); session.save(new A(3, "bbb")); CompassTermFreq[] termFreqs = session.termFreqsBuilder("value").setSort(CompassTermFreqsBuilder.Sort.TERM).toTermFreqs(); assertEquals(2, termFreqs.length); assertEquals("aaa", termFreqs[0].getTerm()); assertEquals(1, (int) termFreqs[0].getFreq()); assertEquals("bbb", termFreqs[1].getTerm()); assertEquals(2, (int) termFreqs[1].getFreq()); tr.commit(); session.close(); } public void testSimpleFreqsWithSize() { CompassSession session = openSession(); CompassTransaction tr = session.beginTransaction(); session.save(new A(1, "test")); session.save(new A(2, "test1")); session.save(new A(3, "test")); CompassTermFreq[] termFreqs = session.termFreqsBuilder("value").setSize(1).toTermFreqs(); assertEquals(1, termFreqs.length); assertEquals("test", termFreqs[0].getTerm()); assertEquals(2, (int) termFreqs[0].getFreq()); tr.commit(); session.close(); } public void testSimpleFreqsWithNormalize() { CompassSession session = openSession(); CompassTransaction tr = session.beginTransaction(); session.save(new A(1, "test")); session.save(new A(2, "test1")); session.save(new A(3, "test")); session.save(new A(4, "test")); session.save(new A(5, "test")); session.save(new A(6, "test")); session.save(new A(7, "test2")); session.save(new A(8, "test2")); CompassTermFreq[] termFreqs = session.termFreqsBuilder("value").normalize(0, 1).toTermFreqs(); assertEquals(3, termFreqs.length); assertEquals("test", termFreqs[0].getTerm()); assertEquals(1.0, termFreqs[0].getFreq(), 0.001); assertEquals("test2", termFreqs[1].getTerm()); assertEquals(0.25, termFreqs[1].getFreq(), 0.001); assertEquals("test1", termFreqs[2].getTerm()); assertEquals(0.0, termFreqs[2].getFreq(), 0.001); termFreqs = session.termFreqsBuilder("value").normalize(1, 10).toTermFreqs(); assertEquals(3, termFreqs.length); assertEquals("test", termFreqs[0].getTerm()); assertEquals(10.0, termFreqs[0].getFreq(), 0.001); assertEquals("test2", termFreqs[1].getTerm()); assertEquals(3.25, termFreqs[1].getFreq(), 0.001); assertEquals("test1", termFreqs[2].getTerm()); assertEquals(1.0, (int) termFreqs[2].getFreq(), 0.001); tr.commit(); session.close(); } public void testSimpleFreqsWithMultiplePropertyNames() { CompassSession session = openSession(); CompassTransaction tr = session.beginTransaction(); session.save(new A(1, "test", "name1")); session.save(new A(2, "test1", "name2")); session.save(new A(3, "test", "name2")); CompassTermFreq[] termFreqs = session.termFreqsBuilder("value", "name").toTermFreqs(); assertEquals(4, termFreqs.length); assertEquals("test", termFreqs[0].getTerm()); assertEquals(2, (int) termFreqs[0].getFreq()); assertEquals("value", termFreqs[0].getPropertyName()); assertEquals("name2", termFreqs[1].getTerm()); assertEquals(2, (int) termFreqs[1].getFreq()); assertEquals("name", termFreqs[1].getPropertyName()); assertEquals("name1", termFreqs[2].getTerm()); assertEquals(1, (int) termFreqs[2].getFreq()); assertEquals("name", termFreqs[2].getPropertyName()); assertEquals("test1", termFreqs[3].getTerm()); assertEquals(1, (int) termFreqs[3].getFreq()); assertEquals("value", termFreqs[3].getPropertyName()); tr.commit(); session.close(); } }