Пример #1
0
 def add_word(word):
     from text_indexer.orm.base import session
     db_word = session.query(Word).filter_by(word=word).first()
     if not db_word:
         db_word = Word(word)
         session.add(db_word)
         session.commit()
     return db_word
Пример #2
0
 def import_file(self, name, writer, performer, path):
     """
     @param name: The name of the song
     @param writer: The song writer.
     @param path: The path of the song.
     """
     db_song = session.query(Song).filter_by(name=name).first()
     if not db_song:
         db_song = Song(name=name, writer=writer, performer=performer)
         session.add(db_song)
     self.load_file_into_song(path, db_song)
Пример #3
0
 def add_relation(name, first, second):
     from text_indexer.orm.word import Word
     from text_indexer.orm.base import session
     db_first = Word.add_word(first)
     db_second = Word.add_word(first)
     
     relation = Relation(name)
     session.add(relation)
     
     session.commit()
     
     word_relation = WordRelationAssociation(relation, db_first, db_second)
     session.add(word_relation)
     session.commit()
     
     
Пример #4
0
    def load_file_into_song(self, path, db_song):
        """
        This function loads the song into the db
        @param path: The path of the song
        @param db_song: The instance of the song in the db
        """
        f = open(path, "r")
        text = f.read()
        f.close()

        words = []
        stanzas = text.split("\n\n")
        rows = 1
        line_number = 1
        number_in_song = 1
        for stanza_number, stanza in enumerate(stanzas):

            stanza_line_number = 1
            rows = stanza.split("\n")
            for row in rows:
                row_word_number = 1
                words = re.findall(r"(\b[^\s]+\b)", row)
                for word in words:
                    self._create_word_in_DB(
                        word, db_song, stanza_number, row_word_number, line_number, stanza_line_number, number_in_song
                    )
                    #                    print "Add word %s to song %s" % (word, db_song.name)
                    #                    print "line", line_number
                    #                    print "stanza", stanza_number
                    #                    print "line number in stanza", stanza_line_number
                    #                    print "word number in row", row_word_number
                    #                    print "="*30

                    row_word_number += 1
                    number_in_song += 1

                stanza_line_number += 1
                line_number += 1

        for word in self.words_to_add.values():
            session.add(word)
        session.commit()
        for word_position in self.word_positions:
            session.add(word_position)
        session.commit()
Пример #5
0
 def add_expression(expression):
     from text_indexer.orm.word import Word
     from text_indexer.orm.base import session
     db_words = []
     for word in expression.split(' '):
         db_word = session.query(Word).filter_by(word=word).first()
         if not db_word:
             db_word = Word(word=word)
             session.add(db_word)
         db_words.append(db_word)
     session.commit()
     
     db_expression = Expression(name=expression)
     session.add(db_expression)
     session.commit()
     number=1
     for db_word in db_words:
         word_expression = WordExpressionAssocaition(word_id=db_word.id, expression_id=db_expression.id, place=number)
         session.add(word_expression)
         number+=1
     session.commit()
     return db_expression
         
Пример #6
0
 def add_group(name):
     from text_indexer.orm.base import session
     db_group = Group(name=name)
     session.add(db_group)
     session.commit()
     return db_group