Code Search for Developers
 
 
  

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

Kneobase

Kneobase is an enterprise search engine, based upon the Lucene search engine and the Spring framework. It allows to perform full-text search across many different content sources. It is highly adaptable out-of-the-box and has a pluggable architecture.

Project homepage: http://sourceforge.net/projects/kneobase
Programming language(s): Java,XML
License: other

  query/
    FullTextQueryTest.java
    HitsTest.java
    LuceneQueryParserTest.java
    NaturalQueryTest.java
    TestHits.java
  SearchSessionTest.java