Я пытаюсь использовать Duke для сопоставления записей из одной базы данных в другую. Один db имеет названия песен + писатели. Я пытаюсь сопоставить другой db, чтобы найти дубликаты и соответствующие записи.Механизм дедупликации Duke: ссылки на записи не работают?
Я получил герцога для запуска, и я вижу, что некоторые из записей совпадают. Но независимо от того, что я делаю, правильные ссылки найдены = 0% всегда, и я просто не могу перейти к файлу ссылки.
Это то, что я сделал в настоящее время:
<duke>
<schema>
<threshold>0.79</threshold>
<maybe-threshold>0.70</maybe-threshold>
<path>test</path>
<property type="id">
<name>PublishingID</name>
</property>
<property type="id">
<name>AmgID</name>
</property>
<property>
<name>NAME</name>
<comparator>no.priv.garshol.duke.comparators.JaroWinkler</comparator>
<low>0.12</low>
<high>0.61</high>
</property>
<property>
<name>TITLE</name>
<comparator>no.priv.garshol.duke.comparators.Levenshtein</comparator>
<low>0.09</low>
<high>0.93</high>
</property>
</schema>
<group>
<jdbc>
<param name="driver-class" value="com.mysql.jdbc.Driver"/>
<param name="connection-string" value="jdbc:mysql://127.0.0.1"/>
<param name="user-name" value="root"/>
<param name="password" value="root"/>
<param name="query" value="
SELECT pSongs.song_id, pSongs.songtitle, pSongs.publisher_id, pWriters.first_name AS writer_first_name, pWriters.last_name AS writer_last_name
FROM devel_matching.publisher_songs AS pSongs
INNER JOIN devel_matching.publisher_writers as pWriters ON pWriters.publisher_id = pSongs.publisher_id AND pWriters.song_id = pSongs.song_id
WHERE pSongs.writers LIKE '%LENNON, JOHN%'
LIMIT 20000;"/>
<column name="song_id" property="PublishingID"/>
<column name="songtitle" property="TITLE" cleaner="no.priv.garshol.duke.cleaners.LowerCaseNormalizeCleaner"/>
<column name="writer_first_name" property="NAME" cleaner = "no.priv.garshol.duke.cleaners.LowerCaseNormalizeCleaner"/>
</jdbc>
</group>
<group>
<jdbc>
<param name="driver-class" value="com.mysql.jdbc.Driver"/>
<param name="connection-string" value="jdbc:mysql://127.0.0.1"/>
<param name="user-name" value="root"/>
<param name="password" value="root"/>
<param name="query" value="
SELECT amgSong.id, amgSong.track, SUBSTRING_INDEX(SUBSTRING_INDEX(amgSong.composer, '/', numbers.n), '/', -1) composer
FROM
devel_matching.numbers INNER JOIN devel_matching.track as amgSong
ON CHAR_LENGTH(amgSong.composer) - CHAR_LENGTH(REPLACE(amgSong.composer, '/', '')) >= numbers.n - 1
WHERE amgSong.composer like '%lennon%'
LIMIT 5000;"/>
<column name="id" property = "AmgID"/>
<column name="track" property="TITLE" cleaner="no.priv.garshol.duke.cleaners.LowerCaseNormalizeCleaner"/>
<column name="composer" property="NAME" cleaner = "no.priv.garshol.duke.cleaners.LowerCaseNormalizeCleaner"/>
</jdbc>
</group>
Выход:
- Всего записей: 5000
- Всего матчей: 8284
- Итого внеоборотные матчи: 1587
- найдено Правильные ссылки: 0/0 (0,0%)
- Неправильные ссылки найдено: 0/0 (0,0%) найдено
- Неизвестные ссылки: 8284
- Процент ссылок правильно 0,0%, неправильно 0,0%, неизвестную 100,0%
- Точность 0,0%, напомним NaN%, диафрагменное число 0,0
Запуск на пружине STS: аргументы программа = --progress --verbose --testfile=linked.txt --testdebug --showmatches duke.xml
Его не пишут в linked.txt или находя правильные ссылки. Не уверен, что я делаю неправильно здесь. Любая помощь была бы потрясающей.
О, мужчина его ВАС !! Спасибо за обновление. – 1000Suns
Я читал намного больше (нашел ваши презентации). В итоге я написал пользовательский прослушиватель, который сохраняет совпадения в памяти, прежде чем выводить его в файл CSV. Это сработало так же хорошо. Я буду присоединяться к этому списку рассылки. Если я могу спросить: у нас есть интегрированный интеграл, можно ли использовать solr в качестве источника данных и пропустить индексацию записей? Его было весело работать с герцогом btw :) – 1000Suns
Э-э, я, я. :) Были некоторые работы по использованию ElasticSearch напрямую, но ни одного из Solr, если я правильно помню. Во всяком случае, это вполне возможно. Для этого есть проблема, поэтому вы можете это посмотреть. https://github.com/larsga/Duke/issues/132 – larsga