annotate common/Matcher.h @ 53:bcea875d8d2f tip

More build fixes
author Chris Cannam
date Thu, 16 Oct 2014 19:03:51 +0100
parents 271cbaf6e8d9
children
rev   line source
Chris@28 1 /* -*- c-basic-offset: 4 indent-tabs-mode: nil -*- vi:set ts=8 sts=4 sw=4: */
Chris@28 2
Chris@28 3 #ifndef _CLASSICAL_DATA_MATCHER_H_
Chris@28 4 #define _CLASSICAL_DATA_MATCHER_H_
Chris@28 5
Chris@34 6 #include "Objects.h"
Chris@34 7
Chris@28 8 #include <dataquay/Uri.h>
Chris@28 9
Chris@30 10 #include <QHash>
Chris@34 11 #include <set>
Chris@30 12
Chris@28 13 namespace ClassicalData {
Chris@28 14
Chris@30 15 class Guess
Chris@30 16 {
Chris@30 17 public:
Chris@30 18 Guess(float c, NamedEntity *e) : m_confidence(c), m_entity(e) { }
Chris@30 19
Chris@30 20 float confidence() const { return m_confidence; }
Chris@30 21 void setConfidence(float c) { m_confidence = c; }
Chris@30 22
Chris@34 23 NamedEntity *entity() const { return m_entity; }
Chris@30 24 void setEntity(NamedEntity *e) { m_entity = e; }
Chris@30 25
Chris@30 26 bool operator<(const Guess &g) const {
Chris@34 27 if (confidence() == g.confidence()) {
Chris@34 28 return entity()->uri() < g.entity()->uri();
Chris@34 29 }
Chris@34 30 return (confidence() > g.confidence()); // n.b. most confident first
Chris@30 31 }
Chris@30 32
Chris@30 33 private:
Chris@30 34 float m_confidence;
Chris@30 35 NamedEntity *m_entity;
Chris@30 36 };
Chris@30 37
Chris@30 38 typedef QList<Guess> GuessList;
Chris@34 39 typedef std::set<Guess> GuessSet;
Chris@28 40
Chris@28 41 class Matcher
Chris@28 42 {
Chris@28 43 public:
Chris@30 44 // Results are guaranteed to be returned in order from most to
Chris@30 45 // least confident
Chris@33 46 virtual GuessList match(QString text, int maxResults,
Chris@33 47 float threshold = 0.f) const = 0;
Chris@28 48 };
Chris@28 49
Chris@28 50 class ComposerTypingQuickMatcher : public Matcher
Chris@28 51 {
Chris@28 52 public:
Chris@30 53 ComposerTypingQuickMatcher(QList<Composer *> cl);
Chris@33 54 virtual GuessList match(QString text, int maxResults,
Chris@33 55 float threshold = 0.f) const;
Chris@28 56
Chris@28 57 private:
Chris@33 58 QList<Composer *> m_composers;
Chris@28 59 };
Chris@28 60
Chris@28 61 class ComposerTypingThoroughMatcher : public Matcher
Chris@28 62 {
Chris@28 63 public:
Chris@30 64 ComposerTypingThoroughMatcher(QList<Composer *> cl);
Chris@33 65 virtual GuessList match(QString text, int maxResults,
Chris@33 66 float threshold = 0.f) const;
Chris@28 67
Chris@28 68 private:
Chris@33 69 QList<Composer *> m_composers;
Chris@33 70 };
Chris@33 71
Chris@33 72 class ComposerFullTextMatcher : public Matcher
Chris@33 73 {
Chris@33 74 public:
Chris@33 75 ComposerFullTextMatcher(QList<Composer *> cl);
Chris@33 76 virtual GuessList match(QString text, int maxResults,
Chris@33 77 float threshold = 0.f) const;
Chris@33 78
Chris@33 79 private:
Chris@33 80 QList<Composer *> m_composers;
Chris@28 81 };
Chris@28 82
Chris@34 83 class WorkCatalogueMatcher : public Matcher
Chris@34 84 {
Chris@34 85 public:
Chris@34 86 WorkCatalogueMatcher(QList<Work *> wl);
Chris@34 87 virtual GuessList match(QString text, int maxResults,
Chris@34 88 float threshold = 0.f) const;
Chris@34 89
Chris@34 90 private:
Chris@34 91 QList<Work *> m_works;
Chris@34 92 };
Chris@34 93
Chris@34 94 class WorkTitleMatcher : public Matcher
Chris@34 95 {
Chris@34 96 public:
Chris@34 97 WorkTitleMatcher(QList<Work *> wl);
Chris@34 98 virtual GuessList match(QString text, int maxResults,
Chris@34 99 float threshold = 0.f) const;
Chris@34 100
Chris@34 101 private:
Chris@34 102 QList<Work *> m_works;
Chris@34 103 };
Chris@34 104
Chris@28 105 }
Chris@28 106
Chris@30 107 Q_DECLARE_METATYPE(ClassicalData::Guess*);
Chris@30 108
Chris@28 109 #endif
Chris@28 110