package net.ion.craken.node.problem.simul;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import junit.framework.TestCase;
import net.ion.framework.util.Debug;
import net.ion.framework.util.InfinityThread;
import net.ion.framework.util.MapUtil;
import net.ion.nsearcher.common.WriteDocument;
import net.ion.nsearcher.config.Central;
import net.ion.nsearcher.config.CentralConfig;
import net.ion.nsearcher.index.IndexJob;
import net.ion.nsearcher.index.IndexSession;
import net.ion.nsearcher.index.Indexer;
import net.ion.nsearcher.search.Searcher;
import net.ion.radon.util.csv.CsvReader;
import org.apache.lucene.store.Directory;
import org.infinispan.Cache;
import org.infinispan.batch.BatchContainer;
import org.infinispan.configuration.cache.Configuration;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.configuration.cache.EvictionConfigurationBuilder;
import org.infinispan.lucene.directory.BuildContext;
import org.infinispan.lucene.directory.DirectoryBuilder;
import org.infinispan.manager.DefaultCacheManager;
public class TestIndex extends TestCase{
private Central central;
private DefaultCacheManager dm;
@Override
protected void setUp() throws Exception {
super.setUp();
this.dm = new DefaultCacheManager("./resource/config/craken-cache-config.xml") ;
Cache<?, ?> metaCache = dm.getCache("search-meta");
Cache<?, ?> chunkCache = dm.getCache("search-chunk");
BuildContext bcontext = DirectoryBuilder.newDirectoryInstance(metaCache, chunkCache, metaCache, "search");
bcontext.chunkSize(16384);
Directory directory = bcontext.create();
this.central = CentralConfig.oldFromDir(directory).build();
dm.start();
}
@Override
protected void tearDown() throws Exception {
central.close();
dm.stop();
super.tearDown();
}
public void testAdd() throws Exception {
Indexer indexer = central.newIndexer() ;
indexer.index(new IndexJob<Void>() {
@Override
public Void handle(IndexSession isession) throws Exception {
File file = new File("C:/temp/freebase-datadump-tsv/data/medicine/drug_label_section.tsv") ;
CsvReader reader = new CsvReader(new BufferedReader(new FileReader(file)));
reader.setFieldDelimiter('\t') ;
String[] headers = reader.readLine();
String[] line = reader.readLine() ;
int max = 500000 ;
while(line != null && line.length > 0 && max-- > 0 ){
if (headers.length != line.length ) continue ;
createDoc("/bleujin/" + max, isession, headers, line).updateVoid() ;
line = reader.readLine() ;
if ((max % 4999) == 0) {
System.out.print('.') ;
isession.continueUnit() ;
}
}
return null;
}
private WriteDocument createDoc(String id, IndexSession isession, String[] headers, String[] line) {
WriteDocument doc = isession.newDocument(id) ;
for(int i = 0 ; i <headers.length ; i++){
String header = headers[i] ;
String value = line[i] ;
doc.unknown(header, value) ;
}
return doc;
}
}) ;
Debug.line("endJob") ;
new InfinityThread().startNJoin();
}
public void testRead() throws Exception {
Searcher searcher = central.newSearcher() ;
searcher.createRequestByKey("/bleujin/88888").find().debugPrint();
new InfinityThread().startNJoin();
}
}