mysql全文搜索为level2索引

时间:2010-06-15 15:19:04

标签: mysql full-text-search

假设我有一张包含产品详细信息的表格。其中一个字段是类别(整数)。

我想对特定类别的产品名称进行全文搜索。

不幸的是,Mysql不允许我指定包含类别和产品名称的索引作为全文。看起来我只能在product_name上使用全文,因此任何全文搜索都会搜索所有类别的产品名称。

有没有办法解决这个问题(只允许对类别中的产品进行全文搜索/索引)?

2 个答案:

答案 0 :(得分:1)

不可能这不可能,MyIsam中的全文搜索每次都会扫描整个全文索引,但是通过在SQL查询中添加WHERE条件,您可以过滤掉不在您的类别中的结果想要搜索。

答案 1 :(得分:0)

从功能角度来看,您可以对产品名称进行全文搜索,也可以在where子句中按类别进行过滤。

select id,product_name
from product_detail
WHERE category = 17  
AND match(product_name) against('+foo*' IN BOOLEAN MODE); 

如果您尝试优化性能,可以使用单独的列或表为每个类别中的产品名称创建单独的全文索引。例如,您可以使用列/表名product_name_cat1,product_name_cat2等。然后,您需要动态构建搜索查询,以根据类别使用相应的列/表。这会给您带来更好的性能,因为每个全文索引都会小于包含所有类别的所有产品名称的组合索引。

select id,product_name
from product_detail
WHERE category = 17  
AND match(product_name_cat17) against('+foo*' IN BOOLEAN MODE);