From 9c4d03c954d237d4d62cb74414c3eda63c1bb942 Mon Sep 17 00:00:00 2001 From: ale <ale@incal.net> Date: Sat, 8 Oct 2011 19:01:16 +0100 Subject: [PATCH] add a little tool to rebuild the SOLR index --- server/djrandom/model/indexer.py | 3 ++ server/djrandom/model/verify.py | 48 ++++++++++++++++++++++++++++++++ server/setup.py | 1 + 3 files changed, 52 insertions(+) create mode 100644 server/djrandom/model/verify.py diff --git a/server/djrandom/model/indexer.py b/server/djrandom/model/indexer.py index 7022ba0..2ec9bd2 100644 --- a/server/djrandom/model/indexer.py +++ b/server/djrandom/model/indexer.py @@ -32,5 +32,8 @@ class Indexer(object): def del_mp3(self, mp3): self._get_solr().delete(mp3.sha1) + def delete_all(self): + self._get_solr().delete_query('id:*') + def commit(self): self._get_solr().commit() diff --git a/server/djrandom/model/verify.py b/server/djrandom/model/verify.py new file mode 100644 index 0000000..c0f447c --- /dev/null +++ b/server/djrandom/model/verify.py @@ -0,0 +1,48 @@ +import os +import optparse +import logging +import time +from djrandom import daemonize +from djrandom import utils +from djrandom.database import Session, init_db, indexer +from djrandom.model.mp3 import MP3 + +log = logging.getLogger(__name__) + + +def fix_solr(): + print 'rebuilding the SOLR index...' + for mp3 in MP3.query: + indexer.add_mp3(mp3) + print 'commit...' + indexer.commit() + print 'done.' + + +def run_fixer(db_url, solr_url): + init_db(db_url, solr_url) + fix_solr() + + +def main(): + parser = optparse.OptionParser() + parser.add_option('--solr_url', default='http://localhost:8080/solr') + parser.add_option('--db_url') + daemonize.add_standard_options(parser) + utils.read_config_defaults( + parser, os.getenv('DJRANDOM_CONF', '/etc/djrandom.conf')) + opts, args = parser.parse_args() + if not opts.db_url: + parser.error('Must provide --db_url') + if args: + parser.error('Too many arguments') + + if opts.once: + opts.foreground = True + + daemonize.daemonize(opts, run_fixer, + (opts.solr_url, opts.db_url)) + + +if __name__ == '__main__': + main() diff --git a/server/setup.py b/server/setup.py index 22f935b..7cb08e7 100644 --- a/server/setup.py +++ b/server/setup.py @@ -23,6 +23,7 @@ setup( "djrandom-frontend = djrandom.frontend.frontend:main", "djrandom-update-markov = djrandom.model.markov:main", "djrandom-metadata-fixer = djrandom.metadata_fixer.metadata_fixer:main", + "djrandom-solr-fixer = djrandom.model.verify:main", ], }, ) -- GitLab