1
0

test_search.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. import os
  2. import pymysql
  3. def get_db_connection():
  4. db_host = os.environ.get('DB_HOST', '127.0.0.1')
  5. db_user = os.environ.get('DB_READER_USER', 'db_reader')
  6. db_pass = os.environ.get('DB_READER_PASS', 'reader_pass')
  7. return pymysql.connect(host=db_host, user=db_user, password=db_pass, database='food_db', cursorclass=pymysql.cursors.DictCursor)
  8. conn = get_db_connection()
  9. with conn.cursor() as cursor:
  10. cursor.execute("SELECT COUNT(*) as c FROM food_db.products_core")
  11. print("Total Core Rows:", cursor.fetchone()['c'])
  12. sq = "white rice"
  13. bool_search = " ".join([f"+{w}" for w in sq.split()])
  14. print("Search query:", bool_search)
  15. sql = """
  16. SELECT code, product_name
  17. FROM food_db.products_core
  18. WHERE MATCH(product_name, ingredients_text) AGAINST(%s IN BOOLEAN MODE)
  19. LIMIT 5
  20. """
  21. cursor.execute(sql, (bool_search,))
  22. res = cursor.fetchall()
  23. print("Result (MATCH product_name, ingredients_text):", len(res))
  24. # Check if MATCH(product_name) works instead
  25. sql = """
  26. SELECT code, product_name
  27. FROM food_db.products_core
  28. WHERE product_name LIKE %s
  29. LIMIT 5
  30. """
  31. cursor.execute(sql, (f"%{sq}%",))
  32. res2 = cursor.fetchall()
  33. print("Result (LIKE):", len(res2))
  34. conn.close()