Как мне удалить дубликаты записей?
В этом случае Twitter использует снежинку в качестве поля уникального идентификатора в JSON
для твита, что отражено ниже. Создайте индекс твитов по идентификатору и удалите каждый дополнительный $tweet
с дубликатом? Но как не закончить рекурсивным удалением каждого твита ...?
A simple FLWOR
для печати идентификатора каждого твита в базе данных:
for $tweets in db:open("twitter")
return <tweet>{$tweets/json/id__str}</tweet>
результаты:
thufir@dur:~/flwor/twitter$
thufir@dur:~/flwor/twitter$ basex tweetID.xq
<tweet>
<id__str>1224165280068382720</id__str>
</tweet>
<tweet>
<id__str>1224160851797643264</id__str>
</tweet>
<tweet>
<id__str>1224134565280862208</id__str>
</tweet>
...
<tweet>
<id__str>1224016596634603520</id__str>
</tweet>
<tweet>
<id__str>1224001430417297410</id__str>
</tweet>
<tweet>
<id__str>1223987662094249991</id__str>
</tweet>thufir@dur:~/flwor/twitter$
thufir@dur:~/flwor/twitter$
Дубликаты здесь являются преднамеренными, но они ищут способ «очистить» базу данных.
Просто ищем общий план или подход. Я думаю о том, чтобы передать вывод из одного xquery
в другой, но я застрял в том, как построить индекс. Предположительно, это функциональность, встроенная в саму базу данных , просто нужно использовать правильный модуль (, вероятно, ).
-
это выглядит чтобы вернуть другой результат, по крайней мере:
distinct-values(
for $tweets in db:open("twitter")
return ($tweets/json/id__str))
, хотя я не совсем уверен, что это набор всех id__str
значений.