Benutzer Diskussion:SirJective/Wartungslisten/Ähnliche Titel

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen

Die verwendete Abfrage benötigt die page-Tabelle und legt Hilfstabellen an.

DROP TABLE IF EXISTS `page_titles_up`;
CREATE TABLE `page_titles_up` (
  `page_id` int(8) unsigned NOT NULL,
  `ns` tinyint(2) unsigned NOT NULL,
  `up_title` varchar(255) binary NOT NULL,
  page_is_redirect tinyint(2) unsigned NOT NULL,
  PRIMARY KEY  (`page_id`),
  KEY `ns_ti` (`ns`,`up_title`)
) TYPE=MyISAM;

INSERT INTO page_titles_up
SELECT page_id, page_namespace, upper(page_title), page_is_redirect
FROM page;

DROP TABLE IF EXISTS `page_titles_up_m`;
CREATE TABLE `page_titles_up_m` (
  `ns` tinyint(2) unsigned NOT NULL default '0',
  `up_title` varchar(255) binary NOT NULL default '',
  `count` smallint(4) unsigned NOT NULL default '0',
  nr_of_redir tinyint(2) unsigned not null,
  PRIMARY KEY  (`ns`,`up_title`)
) TYPE=MyISAM;

insert into page_titles_up_m
SELECT ns, up_title, count( * ) AS c, sum(page_is_redirect)
FROM page_titles_up
GROUP BY ns, up_title
HAVING c > 1
ORDER BY ns, up_title;

drop table if exists page_titles_up_res;
create table page_titles_up_res(
  page_id int(8) unsigned not null,
  primary key (page_id)
);

insert into page_titles_up_res
select cu.page_id
FROM page_titles_up_m AS cum
STRAIGHT_JOIN page_titles_up AS cu
WHERE cum.nr_of_redir+2<=cum.count
AND cu.ns = cum.ns AND cu.up_title = cum.up_title;

SELECT concat('*[[',
 ELT(page.page_namespace+1,
 '',
 'Diskussion:',
 'Benutzer:',
 'Benutzer_Diskussion:',
 'Wikipedia:',
 'Wikipedia_Diskussion:',
 'Bild:',
 'Bild_Diskussion:',
 'MediaWiki:',
 'MediaWiki_Diskussion:',
 'Vorlage:',
 'Vorlage_Diskussion:',
 'Hilfe:',
 'Hilfe_Diskussion:',
 'Kategorie:',
 'Kategorie_Diskussion:'
 ),
 page.page_title,
 ']]',
 if(page.page_is_redirect,' (r)','')
 )
from page_titles_up_res as cr
straight_join page
where cr.page_id = page.page_id
and page_namespace in (0,1,4,5,8,9,10,11,12,13,14,15)
and length(page.page_title) > 3
order by upper(page.page_title), page.page_title, page.page_namespace;

Beim aktuellen Durchlauf (19. Dezember 2005) habe ich die auszuschließenden Seiten manuell aus der Ergebnisliste entfernt. Geschickter ist es, die Ausschlussliste in eine separate Tabelle zu laden und per SQL aus dem Ergebnis zu entfernen. --SirJective 21:06, 19. Dez 2005 (CET)