Exemplo n.º 1
0
    class Doc():
        def __init__(self, doc):
            self.doc   = doc;
            self.lines = LinkedList();
            self.count = 1;
            self._iterator = None;
            self.documentFrequency = None;
        def reset(self):
            self.lines.reset();
            self._iterator = None;
        def __str__(self):
            return '\n\t' + str(self.doc) + ', count:' + str(self.count) + self.lines.toString(',');
        def __lt__(self, other):
            return self.doc < other.doc;
        def __eq__(self, other):
            return self.doc  == other.doc;

        def insertLine(self, line):
            line = IndexList.Line(int(line));
            self.lines.insertSorted(line);

        def __iter__(self):
            return self;
        def next(self):
            if self._iterator is None:
                if self.lines._head is None: raise StopIteration
                self._iterator = self.lines._head;
                return self._iterator.value;
            self._iterator = self._iterator.next;
            if self._iterator is None: raise StopIteration
            return self._iterator.value;
Exemplo n.º 2
0
    class Term():
        def __init__(self, term):
            self.term  = term;
            self.docs  = LinkedList();
            self.count = 1;
            self._iterator = None;
            self._temp = None;
        def __str__(self):
            return "Term: " + self.term + ', count:' + str(self.count) + self.docs.toString(',');
        def __lt__(self, other):
            return self.term <  other.term;
        def __eq__(self, other):
            return self.term  == other.term;
        def reset(self):
            self.docs.reset();
            self._iterator = None;
        def insertDoc(self, doc, line):
            obj = IndexList.Doc(doc);
            current = self.docs.getLastItemOf(obj);
            if current:
                current.count += 1;
            else:
                self.docs.insertSorted(obj);
                current = obj;
            current.insertLine(line);

        def __iter__(self):
            return self;
        def next(self):
            if self._temp is None:
                if self.terms is None: raise StopIteration
                self._temp = self.terms;
            if self._temp._currentNode is None: raise StopIteration
            value = self._temp._currentNode.value;
            self._temp._currentNode = self._temp._currentNode.next;
            return value;

        def __iter__(self):
            return self;
        def next(self):
            if self._iterator is None:
                if self.docs._head is None: raise StopIteration
                self._iterator = self.docs._head;
                return self._iterator.value;
            self._iterator = self._iterator.next;
            if self._iterator is None: raise StopIteration
            return self._iterator.value;
Exemplo n.º 3
0
class IndexList():
    def __init__(self):
        self.objs      = LinkedList();
        self._iterator = None;
    def __str__(self):
        return self.objs.toString('\n');
    def reset(self):
        self.objs.reset();
        self._iterator = None;
    def insert(self, string1, string2, string3):
        obj = IndexList.Term(string1);
        current = self.objs.getLastItemOf(obj);
        if current:
            current.count += 1;
        else:
            self.objs.insertSorted(obj);
            current = obj;
        current.insertDoc(string2, string3);
        return current;

    def __iter__(self):
        return self;
    def next(self):
        if self._iterator is None:
            if self.objs._head is None: raise StopIteration
            self._iterator = self.objs._head;
            return self._iterator.value;
        self._iterator = self._iterator.next;
        if self._iterator is None: raise StopIteration
        return self._iterator.value;

    class Term():
        def __init__(self, term):
            self.term  = term;
            self.docs  = LinkedList();
            self.count = 1;
            self._iterator = None;
            self._temp = None;
        def __str__(self):
            return "Term: " + self.term + ', count:' + str(self.count) + self.docs.toString(',');
        def __lt__(self, other):
            return self.term <  other.term;
        def __eq__(self, other):
            return self.term  == other.term;
        def reset(self):
            self.docs.reset();
            self._iterator = None;
        def insertDoc(self, doc, line):
            obj = IndexList.Doc(doc);
            current = self.docs.getLastItemOf(obj);
            if current:
                current.count += 1;
            else:
                self.docs.insertSorted(obj);
                current = obj;
            current.insertLine(line);

        def __iter__(self):
            return self;
        def next(self):
            if self._temp is None:
                if self.terms is None: raise StopIteration
                self._temp = self.terms;
            if self._temp._currentNode is None: raise StopIteration
            value = self._temp._currentNode.value;
            self._temp._currentNode = self._temp._currentNode.next;
            return value;

        def __iter__(self):
            return self;
        def next(self):
            if self._iterator is None:
                if self.docs._head is None: raise StopIteration
                self._iterator = self.docs._head;
                return self._iterator.value;
            self._iterator = self._iterator.next;
            if self._iterator is None: raise StopIteration
            return self._iterator.value;

    class Doc():
        def __init__(self, doc):
            self.doc   = doc;
            self.lines = LinkedList();
            self.count = 1;
            self._iterator = None;
            self.documentFrequency = None;
        def reset(self):
            self.lines.reset();
            self._iterator = None;
        def __str__(self):
            return '\n\t' + str(self.doc) + ', count:' + str(self.count) + self.lines.toString(',');
        def __lt__(self, other):
            return self.doc < other.doc;
        def __eq__(self, other):
            return self.doc  == other.doc;

        def insertLine(self, line):
            line = IndexList.Line(int(line));
            self.lines.insertSorted(line);

        def __iter__(self):
            return self;
        def next(self):
            if self._iterator is None:
                if self.lines._head is None: raise StopIteration
                self._iterator = self.lines._head;
                return self._iterator.value;
            self._iterator = self._iterator.next;
            if self._iterator is None: raise StopIteration
            return self._iterator.value;

    class Line():
        def __init__(self, line):
            self.line  = line;
        def __str__(self):
            return '\n\t\t' + str(self.line);
        def __lt__(self, other):
            return self.line < other.line;
        def __eq__(self, other):
            return self.line == other.line;