Exemple #1
0
    def _get_items(self, arg=None):
        """Search the FTS database for query.

        :returns: all items that match query
        :rtype: :class:`list`

        """
        query = self.arg if arg is None else arg
        # Prepare proper `sqlite` query for individual items
        sql = self._make_items_query(query)
        log.info('Item sqlite query :\n\t\t\t{}'.format(sql.strip()))
        # Search against either Unicode or ASCII database
        db = self.zotquery.folded_sqlite
        if not isascii(query):
            db = self.zotquery.fts_sqlite
        log.info('Connecting to : `{}`'.format(db.split('/')[-1]))
        con = sqlite3.connect(db)
        # Prepare ranking weights (all columns equal weight)
        ranks = [1.0] * len(config.FILTERS['general'])
        with con:
            # Generate ranking function
            con.create_function('rank', 1, self.zotquery.make_rank_func(ranks))
            # Query FTS database and get result keys
            results = self._do_sqlite(con, sql)
        log.info('Number of results : {}'.format(len(results)))
        return results
Exemple #2
0
    def _get_items(self, arg=None):
        """Search the FTS database for query.

        :returns: all items that match query
        :rtype: :class:`list`

        """
        query = self.arg if arg is None else arg
        # Prepare proper `sqlite` query for individual items
        sql = self._make_items_query(query)
        log.info('Item sqlite query :\n\t\t\t{}'.format(sql.strip()))
        # Search against either Unicode or ASCII database
        db = self.zotquery.folded_sqlite
        if not isascii(query):
            db = self.zotquery.fts_sqlite
        log.info('Connecting to : `{}`'.format(db.split('/')[-1]))
        con = sqlite3.connect(db)
        # Prepare ranking weights (all columns equal weight)
        ranks = [1.0] * len(config.FILTERS['general'])
        with con:
            # Generate ranking function
            con.create_function('rank', 1, self.zotquery.make_rank_func(ranks))
            # Query FTS database and get result keys
            results = self._do_sqlite(con, sql)
        log.info('Number of results : {}'.format(len(results)))
        return results
Exemple #3
0
    def _get_in_group(self, group):
        """Get keys for all items that match query.

        :param group: name of stored group
        :type group: :class:`unicode`
        :returns: item keys
        :rtype: :class:`list`

        """
        # Prepare proper `sqlite` query for searching in Zotero groups
        sql = self._make_in_group_query(group)
        log.info('In-Group sqlite query: {}'.format(sql.strip()))
        # Search against either Unicode or ASCII database
        if not isascii(self.arg):
            db = self.zotquery.fts_sqlite
        else:
            db = self.zotquery.folded_sqlite
        log.info('Connecting to: {}'.format(db))
        con = sqlite3.connect(db)
        with con:
            # Query FTS database and get result keys
            results = self._do_sqlite(con, sql)
        log.info('Number of results : {}'.format(len(results)))
        return results
Exemple #4
0
    def _get_in_group(self, group):
        """Get keys for all items that match query.

        :param group: name of stored group
        :type group: :class:`unicode`
        :returns: item keys
        :rtype: :class:`list`

        """
        # Prepare proper `sqlite` query for searching in Zotero groups
        sql = self._make_in_group_query(group)
        log.info('In-Group sqlite query: {}'.format(sql.strip()))
        # Search against either Unicode or ASCII database
        if not isascii(self.arg):
            db = self.zotquery.fts_sqlite
        else:
            db = self.zotquery.folded_sqlite
        log.info('Connecting to: {}'.format(db))
        con = sqlite3.connect(db)
        with con:
            # Query FTS database and get result keys
            results = self._do_sqlite(con, sql)
        log.info('Number of results : {}'.format(len(results)))
        return results
Exemple #5
0
def get_fts_db(query):
    # Search against either Unicode or ASCII database
    db = zq.backend.folded_sqlite
    if not isascii(query):
        db = zq.backend.fts_sqlite
    return db