svcore  1.9
TextMatcher.h
Go to the documentation of this file.
00001 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*-  vi:set ts=8 sts=4 sw=4: */
00002 
00003 /*
00004     Sonic Visualiser
00005     An audio file viewer and annotation editor.
00006     Centre for Digital Music, Queen Mary, University of London.
00007     This file copyright 2008 QMUL.
00008    
00009     This program is free software; you can redistribute it and/or
00010     modify it under the terms of the GNU General Public License as
00011     published by the Free Software Foundation; either version 2 of the
00012     License, or (at your option) any later version.  See the file
00013     COPYING included with this distribution for more information.
00014 */
00015 
00016 #ifndef _TEXT_MATCHER_H_
00017 #define _TEXT_MATCHER_H_
00018 
00019 #include <QString>
00020 #include <QStringList>
00021 #include "XmlExportable.h"
00022 
00023 #include <map>
00024 
00026 
00027 class TextMatcher
00028 {
00029 public:
00030     TextMatcher();
00031     virtual ~TextMatcher();
00032     
00033     struct Match
00034     {
00035         QString key; // This field is not used by TextMatcher
00036         int score;
00037         typedef std::map<QString, QString> FragmentMap; // text type -> fragment
00038         FragmentMap fragments;
00039 
00040         Match() : score(0) { }
00041         Match(const Match &m) :
00042             key(m.key), score(m.score), fragments(m.fragments) { }
00043 
00044         bool operator<(const Match &m) const; // sort by score first
00045     };
00046 
00047     void test(Match &match, // existing match record to be augmented
00048               QStringList keywords, // search terms
00049               QString text, // to search within
00050               QString textType, // key to use for fragment map
00051               int score); // relative weight for hits within this text type
00052 
00053 };
00054 
00055 
00056 #endif