1 package search.db;
2 
3 import util.ConnectionUtil;
4 import util.SearchUtil;
5 import chemaxon.jchem.db.JChemSearch;
6 import chemaxon.sss.SearchConstants;
7 import chemaxon.sss.search.JChemSearchOptions;
8 import chemaxon.util.ConnectionHandler;
9 
10/**
11 * Example codes for showing consequences of using different search types
12 * 
13 * @author JChem Base team, ChemAxon Ltd.
14 */
15public final class SearchTypesExample {
16
17    private static final String TABLE_NAME = "demo";
18
19    private ConnectionHandler connHandler;
20
21    public static void main(String[] args) {
22        try {
23            new SearchTypesExample().run();
24        } catch (Exception e) {
25            e.printStackTrace();
26        }
27    }
28
29    private void run() throws Exception {
30        connHandler = ConnectionUtil.connectToDB();
31        try {
32            runSearches();
33        } finally {
34            ConnectionUtil.closeConnection(connHandler);
35        }
36    }
37
38    private void runSearches() throws Exception {
39        JChemSearchOptions searchOpts = new JChemSearchOptions(SearchConstants.SUBSTRUCTURE);
40        JChemSearch jcs = SearchUtil.createJChemSearch(connHandler, "Brc1ccccc1", TABLE_NAME,
41                searchOpts);
42        jcs.run();
43        printResultMessage(jcs);
44
45        searchOpts = new JChemSearchOptions(SearchConstants.SIMILARITY);
46        searchOpts.setDissimilarityThreshold((float) 0.7);
47        jcs.setSearchOptions(searchOpts);
48        jcs.run();
49        printResultMessage(jcs);
50
51        searchOpts = new JChemSearchOptions(SearchConstants.SUPERSTRUCTURE);
52        jcs.setSearchOptions(searchOpts);
53        jcs.run();
54        printResultMessage(jcs);
55    }
56
57    private void printResultMessage(JChemSearch search) {
58        System.out.printf("%d hit(s) found, %d ms\n", search.getResultCount(),
59                search.getSearchTime());
60    }
61
62}
63