]> git.ipfire.org Git - people/jschlag/pbs.git/commitdiff
Alter search so that no FULLTEXT index is required.
authorMichael Tremer <michael.tremer@ipfire.org>
Sun, 17 Feb 2013 13:58:41 +0000 (14:58 +0100)
committerMichael Tremer <michael.tremer@ipfire.org>
Sun, 17 Feb 2013 13:58:41 +0000 (14:58 +0100)
Our version of MySQL does not support FULLTEXT indexes
with InnoDB.

backend/packages.py

index 2682c6b1cff1e3c593ea5e972a4e9c694a2523f5..6b92eb988b24f2b186a6f0c933ef91210e7a1b8c 100644 (file)
@@ -64,13 +64,22 @@ class Packages(base.Object):
 
                        This function does not work for UUIDs or filenames.
                """
-               query = "SELECT id FROM packages WHERE type = 'source' AND \
-                       (name LIKE %s OR MATCH(name, summary, description) AGAINST(%s)) \
+               query = "SELECT * FROM packages \
+                       WHERE type = %s AND ( \
+                               name LIKE %s OR \
+                               summary LIKE %s OR \
+                               description LIKE %s \
+                       ) \
                        GROUP BY name"
 
+               pattern = "%%%s%%" % pattern
+               args = ("source", pattern, pattern, pattern)
+
+               res = self.db.query(query, *args)
+
                pkgs = []
-               for pkg in self.db.query(query, pattern, pattern):
-                       pkg = Package(self.pakfire, pkg.id)
+               for row in res:
+                       pkg = Package(self.pakfire, row.id, row)
                        pkgs.append(pkg)
 
                        if limit and len(pkgs) >= limit: