我想问是否有人可以帮助我解决这个问题
SELECT count(MATCH(product_text) AGAINST('lorem*' in boolean mode)) AS score FROM table_products WHERE MATCH (text) AGAINST ('lorem*' in boolean mode) limit 0,50000
列文本上有全文索引。Am 查询将行总和作为分数返回。我不会计算全文搜索结果。如果结果(行)数大于 50000,则返回 count-sum 50000,否则返回结果的确切计数。
问题是,如果用户尝试查找例如单词“lorem”并且该单词出现在表 fe 中超过 500 000 x,那么在 150 万行的表宽度上它并不快。
我也试过
SELECT id,name,product_text,price, MATCH(product_text) AGAINST('lorem*' in boolean mode) AS score FROM table_products WHERE MATCH(product_text) AGAINST('lorem*' in boolean mode) and show_product='1' limit 0,50000
...宽度 php mysql_num_rows
另一个问题是,在以下查询中,mysql 仅使用全文索引并按另一列或按分数排序比慢
SELECT id,name,product_text,price, MATCH(product_text) AGAINST('lorem*' in boolean mode) AS score FROM table_products WHERE MATCH(product_text) AGAINST('lorem*' in boolean mode) and show_product='1' order by score desc limit 0,50000
分别 (..按名称订购,按价格订购)
还有其他更好更快的方法吗?
非常感谢您的帮助。