]> git.openstreetmap.org Git - osqa.git/commitdiff
Some improvements in the mysql full text module.
authorhernani <hernani@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Thu, 26 May 2011 12:07:42 +0000 (12:07 +0000)
committerhernani <hernani@0cfe37f9-358a-4d5e-be75-b63607b5c754>
Thu, 26 May 2011 12:07:42 +0000 (12:07 +0000)
git-svn-id: http://svn.osqa.net/svnroot/osqa/trunk@1048 0cfe37f9-358a-4d5e-be75-b63607b5c754

forum_modules/mysqlfulltext/__init__.py
forum_modules/mysqlfulltext/models.py
forum_modules/mysqlfulltext/startup.py

index b9ce96f21e9975ad38aebe3d1bb94019e4173659..679d70387eed15b644fc1e58f3aae4c8ec607b7d 100644 (file)
@@ -3,8 +3,10 @@ DESCRIPTION = "Enables Mysql full text search functionality."
 
 try:
     import MySQLdb
-    from django.conf import settings
-    CAN_USE = settings.DATABASE_ENGINE in ('mysql', 'pooled_mysql')
-except:
+    import settings_local
+    CAN_USE = settings_local.DATABASE_ENGINE in ('mysql', 'pooled_mysql')
+except Exception, e:
+    import traceback
+    traceback.print_exc()
     CAN_USE = False
   
\ No newline at end of file
index 8f22379cae79900f882415309b77a3a2611833e4..1de3dea49797e27f4b1e80d4df02dd410df7e10a 100644 (file)
@@ -3,6 +3,8 @@ from django.db import models
 class MysqlFtsIndex(models.Model):
     node       = models.OneToOneField('Node', related_name='ftsindex')
     body       = models.TextField()
+    title      = models.CharField(max_length=300)
+    tagnames   = models.CharField(max_length=255)
 
     class Meta:
         managed = False
index e2bc7efc91a6f36c34097a3036353b3c5f00cf9a..232bbb46a633d517ed563ca6680554a9aef40d95 100644 (file)
@@ -44,14 +44,13 @@ def question_search(self, keywords):
     keywords = keywords.upper()
 
     return '-ranking', self.filter(
-            models.Q(ftsindex__body__search=keywords) or models.Q(ftsindex__title__search=keywords) or models.Q(ftsindex__tagnames__search=keywords)
-
+            models.Q(ftsindex__body__isnull=False)
     ).extra(
         select={
             'ranking': """
-                match(forum_mysqlftsindex.tagnames) against (%s in boolean mode) * 4 +
-                match(forum_mysqlftsindex.title) against (%s in boolean mode) * 2 +
-                match(forum_mysqlftsindex.body) against (%s in boolean mode) * 1
+                match(forum_mysqlftsindex.tagnames) against (%s) * 2 +
+                match(forum_mysqlftsindex.title) against (%s) * 4 +
+                match(forum_mysqlftsindex.body) against (%s) * 1
                                 """,
             },
         select_params=[keywords, keywords, keywords]