Php Mysql(全文?)搜索产品
我正在构建一个非常简单的产品目录,将产品存储在mysql表中,我希望尽可能快地搜索产品(并且尽可能相关)。产品数据库将相当大(大约50万个产品),这就是为什么使用“like”而不使用索引的搜索速度非常慢的原因 我有许多字段,但我只想搜索以下字段:Php Mysql(全文?)搜索产品,php,mysql,sql,search,Php,Mysql,Sql,Search,我正在构建一个非常简单的产品目录,将产品存储在mysql表中,我希望尽可能快地搜索产品(并且尽可能相关)。产品数据库将相当大(大约50万个产品),这就是为什么使用“like”而不使用索引的搜索速度非常慢的原因 我有许多字段,但我只想搜索以下字段: product_id=bigint title=varchar(255) 描述=文本 我尝试了全文搜索,但出现了一些问题: 我无法按产品id搜索,因为它是大整数,不能在全文索引中索引(有时用户知道产品的id) 如果我搜索“Meter XY-123
- product_id=bigint
- title=varchar(255)
- 描述=文本
- 我无法按产品id搜索,因为它是大整数,不能在全文索引中索引(有时用户知道产品的id)
- 如果我搜索“Meter XY-123”,即使单个产品的标题和描述包含两个词(“Meter”和“XY-123”),我也不会得到任何搜索结果
- 我无法搜索子字符串-例如,如果产品标题为“Foobar 123”,则即使用户搜索以下内容,也应返回:
- 富吧123
- 酒吧123
- foobar 12
- 福
- 等等
- 结果也应该按某种相关性排序返回。。e、 g.如果我有两个产品“foobar 123”和“foobar 456”,并且用户搜索“foobar 4”,那么这两个产品都应该返回(匹配任何单词),但是第二个产品的排名(因为它也包含数字4)应该高于第一个产品(不包含数字4)
- 还应根据价值所在的字段对产品进行排名。在这种情况下,product_id字段的权重大于title,title的权重也高于description。例如,如果用户搜索“1234”,则:
- 排名第一的产品应该是产品id为1234的产品
- 之后,应该有排名产品,包括“1234”内的标题
- 在描述中包含此编号的后续产品
谢谢大家! 我们将搜索迁移到斯芬克斯。。现在我们需要对结果进行微调。不确定,但您可以尝试使用查询扩展进行全文搜索。我使用的是Sphinx搜索引擎。它的工作完美的全文搜索。请看:不幸的是,斯芬克斯不是一个选项。我只寻找mysql(&php)选项。你能给我一个这样的查询扩展的例子吗?