예제 #1
0
 @Override
 public void index(Document document) {
   if (log.isTraceEnabled()) {
     log.trace(
         "Indexing "
             + sql
             + " id="
             + JdbcIndexDefinition.this.identifier
             + ", key = "
             + JdbcIndexDefinition.this.key);
   }
   String id = getIdentifier();
   if (id != null) {
     document.add(
         new Field(
             "builder",
             "VIRTUAL BUILDER",
             Field.Store.YES,
             Field.Index.NOT_ANALYZED)); // keyword
     document.add(
         new Field(
             "number", getIdentifier(), Field.Store.YES, Field.Index.NOT_ANALYZED)); // keyword
   }
   try {
     for (int i = 1; i <= meta.getColumnCount(); i++) {
       String value = org.mmbase.util.Casting.toString(results.getString(i));
       if (log.isTraceEnabled()) {
         log.trace(
             "Indexing " + value + " for " + meta.getColumnName(i) + " on " + getIdentifier());
       }
       String fieldName = meta.getColumnName(i);
       if (keyWords.contains(fieldName)) {
         Indexer.addField(
             document,
             new Field(fieldName, value, Field.Store.YES, Field.Index.NOT_ANALYZED),
             nonDefaultMultiples.get(fieldName)); // keyword
       } else {
         Field field = new Field(fieldName, value, Field.Store.YES, Field.Index.ANALYZED);
         Float boost = boosts.get(fieldName);
         if (boost != null) {
           field.setBoost(boost);
         }
         Indexer.addField(document, field, nonDefaultMultiples.get(fieldName));
         Field fullText = new Field("fulltext", value, Field.Store.YES, Field.Index.ANALYZED);
         if (boost != null) {
           fullText.setBoost(boost);
         }
         document.add(fullText);
       }
     }
   } catch (SQLException sqe) {
     log.error(sqe.getMessage(), sqe);
   }
 }
예제 #2
0
 protected void check() {
   if (map == null) {
     Connection connection = null;
     Statement statement = null;
     ResultSet results = null;
     try {
       connection = dataSource.getConnection();
       statement = connection.createStatement();
       long start = System.currentTimeMillis();
       String s = getFindSql(identifier);
       if (log.isTraceEnabled()) {
         log.trace("About to execute " + s + " because ", new Exception());
       }
       results = statement.executeQuery(s);
       ResultSetMetaData meta = results.getMetaData();
       map = new HashMap<String, String>();
       if (results.next()) {
         for (int i = 1; i <= meta.getColumnCount(); i++) {
           String value = org.mmbase.util.Casting.toString(results.getString(i));
           map.put(meta.getColumnName(i).toLowerCase(), value);
         }
       }
       long duration = (System.currentTimeMillis() - start);
       if (duration > 500) {
         log.warn("Executed " + s + " in " + duration + " ms");
       } else if (duration > 100) {
         log.debug("Executed " + s + " in " + duration + " ms");
       } else {
         log.trace("Executed " + s + " in " + duration + " ms");
       }
     } catch (Exception e) {
       throw new RuntimeException(e.getMessage(), e);
     } finally {
       if (results != null)
         try {
           results.close();
         } catch (Exception e) {
         }
       if (statement != null)
         try {
           statement.close();
         } catch (Exception e) {
         }
       if (connection != null)
         try {
           connection.close();
         } catch (Exception e) {
         }
     }
   }
 }