def search(query, limitResults=Search_ResultLimit): query = utils.simplifyString(query) cur = songSearchIndexDb._selectCmd("select docid from data where data match ? limit %i" % limitResults, (query,)) results = [r[0] for r in cur] def getSongIdByRowId(rowId): songId = songSearchIndexRefDb._selectCmd("select songid from data where rowid=?", (rowId,)).fetchone() if songId is not None: songId = songId[0] return str(songId) return None results = map(getSongIdByRowId, results) results = map(getSongSummaryDictById, results) results = filter(None, results) return results
def insertSearchEntry_raw(songId, tokens): songId = buffer(songId) with songSearchIndexRefDb.writelock: rowId = songSearchIndexRefDb._selectCmd("select rowid from data where songid=?", (songId,)).fetchone() if rowId is not None: rowId = rowId[0] else: # insert new songSearchIndexRefDb._actionCmd("insert into data(songid) values(?)", (songId,)) rowId = songSearchIndexRefDb._selectCmd("select rowid from data where songid=?", (songId,)).fetchone() assert rowId is not None rowId = rowId[0] tokens = " ".join(tokens) tokens = utils.simplifyString(tokens) songSearchIndexDb._actionCmd("replace into data(docid, content) values (?,?)", (rowId, tokens))