1

Duke Fast Deduplication Engineを使用して、勤務先の会社のデータベースで重複レコードを検索しようとしています。

次のようにコマンドラインから実行します。

java -cp "C:\utils\duke-0.6\duke-0.6.jar;C:\utils\duke-0.6\lucene-core-3.6.1.jar" no.priv.garshol.duke.Duke --showmatches --verbose .\config.xml

しかし、私はエラーが発生します:

Exception in thread "main" java.lang.UnsupportedOperationException: Operation no
t yet supported
        at sun.jdbc.odbc.JdbcOdbcResultSet.isClosed(Unknown Source)
        at no.priv.garshol.duke.datasources.JDBCDataSource$JDBCIterator.close(JD
BCDataSource.java:115)
        at no.priv.garshol.duke.Processor.deduplicate(Processor.java:152)
        at no.priv.garshol.duke.Duke.main_(Duke.java:135)
        at no.priv.garshol.duke.Duke.main(Duke.java:38)

私の構成ファイルは次のようになります。

<duke>
   <schema>
         <threshold>0.82</threshold>
         <maybe-threshold>0.80</maybe-threshold>
         <path>test</path>

         <property type="id">
              <name>ID</name>
         </property>

         <property>
             <name>LNAME</name>
             <comparator>no.priv.garshol.duke.comparators.ExactComparator</comparator>
             <low>0.6</low>
             <high>0.8</high>
         </property>

         <property>
             <name>FNAME</name>
             <comparator>no.priv.garshol.duke.comparators.ExactComparator</comparator>
             <low>0.6</low>
             <high>0.8</high>
         </property>

         <property>
             <name>MNAME</name>
             <comparator>no.priv.garshol.duke.comparators.ExactComparator</comparator>
             <low>0.3</low>
             <high>0.5</high>
         </property>

         <property>
             <name>SSN</name>
             <comparator>no.priv.garshol.duke.comparators.ExactComparator</comparator>
             <low>0.0</low>
             <high>1.0</high>
         </property>

   </schema>
   <jdbc>
          <param name="driver-class" value="sun.jdbc.odbc.JdbcOdbcDriver" />
          <param name="connection-string" value="jdbc:odbc:VT_DeDupe" />
          <param name="user-name" value="aleer" />
          <param name="password" value="**" />
          <param name="query" value="select SocialSecurityNumber, LastName, FirstName, MiddleName, empssn from T_Employees" />

          <column name="SocialSecurityNumber" property="ID" />
          <column name="LastName" property="LNAME" />
          <column name="FirstName" property="FNAME" />
          <column name="MiddleName" property="MNAME" />
          <column name="empssn" property="SSN" />
   </jdbc>
</duke>

何がサポートされていないのかはわかりません...試しているだけで、構成に関してはまだ深刻なことは何もありません。

4

2 に答える 2

2

mbonaci が言うように、問題は JDBC ドライバーの isClosed() メソッドが実装されていないことです。これを実装することは、単純に「return closed」と書くことほど難しいことではありません。

この問題の醜い回避策を追加しました。「hg プル」を実行して、もう一度やり直してください。

于 2012-10-12T06:27:54.367 に答える
1

どのJavaバージョンを使用していますか?
sun.jdbc.odbc.JdbcOdbcResultSet.isClosed は、Java 1.6 で初めて登場しました。v1.7でも次のように見えます(Java 8でチェックしていません):

public boolean isClosed() throws SQLException {
    throw new UnsupportedOperationException("Operation not yet supported");
}

したがって、そのメソッドを呼び出さないでください。結果セットが閉じているかどうかを確認する別の方法を使用してください。

または、コードを変更できない場合は、プロジェクトの作成者に助けを求めてください ( RS を閉じるときに例外を解決する努力があったようです)。

于 2012-10-11T18:33:06.397 に答える