SearchSessionTest.java from Kneobase at Krugle
Show SearchSessionTest.java syntax highlighted
/*
* Created on 13/09/2004
*
*/
package com.kneobase.search;
import java.io.File;
import java.util.Collection;
import junit.framework.TestCase;
import org.springframework.context.support.FileSystemXmlApplicationContext;
import com.kneobase.document.Document;
import com.kneobase.search.query.Filter;
import com.kneobase.search.query.Hits;
import com.kneobase.search.query.FullTextQuery;
import com.kneobase.search.query.Query;
import com.kneobase.search.query.QueryFilter;
import com.kneobase.search.query.Term;
import com.kneobase.search.query.TermQuery;
import com.kneobase.server.index.IndexManager;
/**
* @author Ernesto De Santis
*
*/
public class SearchSessionTest extends TestCase {
IndexManager indexManager;
I_SearchSession searchSession;
public SearchSessionTest(){
try{
String[] xmls = new String[5];
xmls[0] = new File("testfolder/kneobase/config/body_parsers.xml").getAbsolutePath();
xmls[1] = new File("testfolder/kneobase/config/content_factories.xml").getAbsolutePath();
xmls[2] = new File("testfolder/kneobase/config/languages.xml").getAbsolutePath();
xmls[3] = new File("testfolder/kneobase/config/mimetype.xml").getAbsolutePath();
xmls[4] = new File("testfolder/kneobase/config/server.xml").getAbsolutePath();
FileSystemXmlApplicationContext appContext = new FileSystemXmlApplicationContext(xmls);
indexManager = (IndexManager) appContext.getBean("indexManager");
searchSession = indexManager.getSearchSession();
}catch(Exception e){
fail();
}
}
public void testSearch() {
try {
Query query = new FullTextQuery("bulk", "informe sobre el patronato de liberados");
Hits hits = searchSession.search(query);
assertNotNull(hits);
assertTrue(hits.length() > 0);
Document doc = hits.get(0);
assertNotNull(doc);
assertEquals(doc.getLanguage(), "es");
doc = hits.get(((hits.length() - 1) / 2));
assertNotNull(doc);
assertEquals(doc.getLanguage(), "es");
doc = hits.get((hits.length() - 1));
assertNotNull(doc);
assertEquals(doc.getLanguage(), "es");
} catch (Exception e) {
fail();
}
}
public void testSearchEnglishAutodetection() {
try {
Query query = new FullTextQuery("bulk", "java is an Object Oriented Language");
Hits hits = searchSession.search(query);
assertNotNull(hits);
assertTrue(hits.length() > 0);
Document doc = hits.get(0);
assertNotNull(doc);
assertEquals(doc.getLanguage(), "en");
doc = hits.get(((hits.length() - 1) / 2));
assertNotNull(doc);
assertEquals(doc.getLanguage(), "en");
doc = hits.get((hits.length() - 1));
assertNotNull(doc);
assertEquals(doc.getLanguage(), "en");
} catch (Exception e) {
fail();
}
}
/*
public void testSearchAutodetectionWithNotSupportedLanguage() {
try {
//Italian query.
Query query = new NaturalQuery("bulk", "Tutto il Paese è unito intorno alle famiglie delle due volontarie sequestrate in Iraq, Informe.");
Hits hits = searchSession.search(query);
assertNotNull(hits);
assertTrue(hits.length() > 0);
//Italian is not supported, Spanish is default language in server.
Document doc = hits.get(0);
assertNotNull(doc);
assertEquals(doc.getLanguage(), "es");
doc = hits.get(((hits.length() - 1) / 2));
assertNotNull(doc);
assertEquals(doc.getLanguage(), "es");
doc = hits.get((hits.length() - 1));
assertNotNull(doc);
assertEquals(doc.getLanguage(), "es");
} catch (Exception e) {
fail();
}
}
*/
public void testSearchWithQueryFilter() {
try {
Query query = new FullTextQuery("bulk", "informe funciona palm windows");
Query qFilter = new TermQuery(new Term("name", "inform"));
Filter filter = new QueryFilter(qFilter);
Hits hits = searchSession.search(query, filter);
assertNotNull(hits);
assertTrue(hits.length() > 0);
assertTrue(hits.get(0).get("name").toLowerCase().lastIndexOf("inform") != -1);
assertTrue(hits.get(((hits.length() - 1) / 2)).get("name").toLowerCase().lastIndexOf("inform") != -1);
assertTrue(hits.get(hits.length() - 1).get("name").toLowerCase().lastIndexOf("inform") != -1);
} catch (Exception e) {
fail();
}
}
public void testSearchWithSources() {
try {
Query query = new FullTextQuery("bulk", "informe java");
String[] sources = new String[1];
String[] languages = new String[1];
sources[0] = "J2EE";
languages[0] = "en";
Hits hits = searchSession.search(query, sources, languages);
assertNotNull(hits);
assertTrue(hits.length() > 0);
assertTrue(hits.get(0).getSource().lastIndexOf("J2EE") != -1);
assertTrue(hits.get(((hits.length() - 1) / 2)).getSource().lastIndexOf("J2EE") != -1);
assertTrue(hits.get(hits.length() - 1).getSource().lastIndexOf("J2EE") != -1);
} catch (Exception e) {
fail();
}
}
public void testSearchWithLanguages() {
try {
Query query = new FullTextQuery("bulk", "informe java");
String[] languagesEs = new String[1];
languagesEs[0] = "es";
String[] languagesEn = new String[1];
languagesEn[0] = "en";
Hits hitsEs = searchSession.search(query, null, null, languagesEs);
Hits hitsEn = searchSession.search(query, null, null, languagesEn);
assertNotNull(hitsEs);
assertTrue(hitsEs.length() > 0);
assertNotNull(hitsEn);
assertTrue(hitsEn.length() > 0);
assertTrue(hitsEs.length() != hitsEn.length());
assertTrue(hitsEs.get(0).getLanguage().equals("es"));
assertTrue(hitsEs.get(((hitsEs.length() - 1) / 2)).getLanguage().equals("es"));
assertTrue(hitsEs.get(hitsEs.length() - 1).getLanguage().equals("es"));
assertTrue(hitsEn.get(0).getLanguage().equals("en"));
assertTrue(hitsEn.get(((hitsEn.length() - 1) / 2)).getLanguage().equals("en"));
assertTrue(hitsEn.get(hitsEn.length() - 1).getLanguage().equals("en"));
} catch (Exception e) {
fail();
}
}
public void testSearchWithMultiplesLanguages() {
try {
Query query = new FullTextQuery("bulk", "informe java");
String[] languages = new String[2];
languages[0] = "es";
languages[1] = "en";
Hits hits = searchSession.search(query, null, null, languages);
assertNotNull(hits);
assertTrue(hits.length() > 0);
String resultLanguage = hits.get(0).getLanguage();
assertTrue(resultLanguage.equals("es") || resultLanguage.equals("en"));
resultLanguage = hits.get(((hits.length() - 1) / 2)).getLanguage();
assertTrue(resultLanguage.equals("es") || resultLanguage.equals("en"));
resultLanguage = hits.get((hits.length() - 1)).getLanguage();
assertTrue(resultLanguage.equals("es") || resultLanguage.equals("en"));
} catch (Exception e) {
fail();
}
}
public void testSearchWithAll() {
try {
Query query = new FullTextQuery("bulk", "informe java");
String[] languages = new String[1];
languages[0] = "es";
String[] sources = new String[2];
sources[0] = "FernandaPatronato";
Filter filter = new QueryFilter(new TermQuery(new Term("name", "inform")));
Hits hits = searchSession.search(query, filter, sources, languages);
assertNotNull(hits);
assertTrue(hits.length() > 0);
assertTrue(hits.get(0).getLanguage().equals("es"));
assertTrue(hits.get(0).getSource().equals("FernandaPatronato"));
assertTrue(hits.get(0).get("name").toLowerCase().lastIndexOf("inform") != -1);
Document doc = hits.get(((hits.length() - 1) / 2));
assertTrue(hits.get(((hits.length() - 1) / 2)).getLanguage().equals("es"));
assertTrue(hits.get(((hits.length() - 1) / 2)).getSource().equals("FernandaPatronato"));
assertTrue(hits.get(((hits.length() - 1) / 2)).get("name").toLowerCase().lastIndexOf("inform") != -1);
doc = hits.get(hits.length() - 1);
assertTrue(hits.get(hits.length() - 1).getLanguage().equals("es"));
assertTrue(hits.get(hits.length() - 1).getSource().equals("FernandaPatronato"));
assertTrue(hits.get(hits.length() - 1).get("name").toLowerCase().lastIndexOf("inform") != -1);
} catch (Exception e) {
fail();
}
}
public void testLanguages() {
Collection allLanguages = searchSession.getLanguages();
assertNotNull(allLanguages);
assertTrue(allLanguages.contains("es"));
assertTrue(allLanguages.contains("en"));
assertTrue(allLanguages.contains("pt"));
assertTrue(allLanguages.size() == 6);
}
/*
public void testLanguageSource() {
Collection languages = searchSession.getLanguages("J2EE");
assertNotNull(languages);
assertTrue(languages.contains("none"));
assertTrue(languages.contains("en"));
assertTrue(languages.size() == 2);
}
*/
public void testCategories() {
Collection categories = searchSession.getCategories();
assertNotNull(categories);
assertTrue(categories.contains("extension"));
assertTrue(categories.contains("another"));
assertTrue(categories.size() == 2);
}
public void testCategoriesSource() {
Collection categories = searchSession.getCategories("J2EE");
assertNotNull(categories);
assertTrue(categories.contains("extension"));
assertTrue(categories.contains("another"));
assertTrue(categories.size() == 2);
}
public void testFields() {
Collection fields = searchSession.getFields();
assertNotNull(fields);
assertTrue(fields.contains("name"));
assertTrue(fields.contains("abspath"));
assertTrue(fields.contains("body"));
assertTrue(fields.contains("bulk"));
assertTrue(fields.contains("link"));
assertTrue(fields.size() == 5);
}
public void testFieldsSource() {
Collection fields = searchSession.getFields("J2EE");
assertNotNull(fields);
assertTrue(fields.contains("name"));
assertTrue(fields.contains("abspath"));
assertTrue(fields.contains("body"));
assertTrue(fields.contains("bulk"));
assertTrue(fields.contains("link"));
assertTrue(fields.size() == 5);
}
public void testSources() {
Collection sources = searchSession.getSources();
assertNotNull(sources);
assertTrue(sources.contains("J2EE"));
assertTrue(sources.size() == 1);
}
}
See more files for this project here