Php 全文搜索不够,需要解决方法,有什么想法吗?
我目前不能使用全文索引来搜索整个单词,因为我的服务器不允许搜索字符串中少于4个字符 我需要你们的解决办法 我想能够进入'宝马330',然后从mysql的结果与整个比赛,如'宝马330'Php 全文搜索不够,需要解决方法,有什么想法吗?,php,mysql,full-text-search,Php,Mysql,Full Text Search,我目前不能使用全文索引来搜索整个单词,因为我的服务器不允许搜索字符串中少于4个字符 我需要你们的解决办法 我想能够进入'宝马330',然后从mysql的结果与整个比赛,如'宝马330' 我应该考虑第三方搜索引擎吗? 如何在PHP中实现这一点 谢谢你可以用类似的东西。它是用PHP编写的,所以你不需要安装任何东西。你可以使用类似的东西。它是用PHP编写的,所以您不需要安装任何东西。那么,如果您这样编写SQL会怎么样: SELECT * FROM table WHERE text_column LIK
我应该考虑第三方搜索引擎吗?
如何在PHP中实现这一点谢谢你可以用类似的东西。它是用PHP编写的,所以你不需要安装任何东西。你可以使用类似的东西。它是用PHP编写的,所以您不需要安装任何东西。那么,如果您这样编写SQL会怎么样:
SELECT * FROM table WHERE text_column LIKE '%bmw 330%'
?那么,如果您这样编写SQL怎么办:
SELECT * FROM table WHERE text_column LIKE '%bmw 330%'
?您说的是“我的服务器”,所以我想您可以直接访问它的配置:
您可以在MySQL中更改全文搜索所需的最小字符数,只需更改以下行(在my.cnf中)即可满足您的需要:
[mysqld]
ft_min_word_len=3
最美好的祝愿,Fabian您说的是“我的服务器”,所以我想您可以直接访问它的配置: 您可以在MySQL中更改全文搜索所需的最小字符数,只需更改以下行(在my.cnf中)即可满足您的需要:
[mysqld]
ft_min_word_len=3
最美好的祝愿,Fabian从列为“%bmw 330%”的表中选择*?从列为“%bmw 330%”的表中选择*?如果要精确匹配,则需要
SELECT * FROM table WHERE text_column = 'bmw 330'
.如果要精确匹配,则需要
SELECT * FROM table WHERE text_column = 'bmw 330'
.怎么样
SELECT * FROM table WHERE text_column LIKE '% bmw 330 %'
(注意百分比前后的空格。)
?
一些限制:它会找到完整的单词,但找不到
bmw 330(mint condition)
SPECIAL OFFER!!!!!bmw 330
怎么样
SELECT * FROM table WHERE text_column LIKE '% bmw 330 %'
(注意百分比前后的空格。)
?
一些限制:它会找到完整的单词,但找不到
bmw 330(mint condition)
SPECIAL OFFER!!!!!bmw 330
好的,你现在有很多建议。最好的方法当然是使用像Lucene这样的专业搜索引擎 如果您不能使用Lucene之类的工具,我有一个大规模黑客解决方案的想法
- 在表中创建第二个文本字段
- 每当更新文本字段时,将其副本写入第二个文本字段。使用正则表达式查找长度小于4个字符的单词,并在每次出现时添加预定义字符串:
=>bmw
bmwABCDEF
- 对于每个传入的搜索查询,使用相同的正则表达式将字符串添加到每个小于4个字符的单词中
将变为bmw 300
并相应匹配李>bmwABCDEF 300ABCDEF
它非常粗糙,需要彻底检查可能的副作用,但可能比没有更好 好吧,你现在有很多建议。最好的方法当然是使用像Lucene这样的专业搜索引擎 如果您不能使用Lucene之类的工具,我有一个大规模黑客解决方案的想法
- 在表中创建第二个文本字段
- 每当更新文本字段时,将其副本写入第二个文本字段。使用正则表达式查找长度小于4个字符的单词,并在每次出现时添加预定义字符串:
=>bmw
bmwABCDEF
- 对于每个传入的搜索查询,使用相同的正则表达式将字符串添加到每个小于4个字符的单词中
将变为bmw 300
并相应匹配李>bmwABCDEF 300ABCDEF
它非常粗糙,需要彻底检查可能的副作用,但可能比没有更好 我试过了,没用,是吗?因为当我尝试时,它返回“BMW330”,即使我写了“bm”…哦。。。那你不想,你想。。。我的下一个答案。我试过了,它不起作用,是吗?因为当我尝试时,它返回“BMW330”,即使我写了“bm”…哦。。。那你不想,你想。。。我的下一个答案是。不,我没有直接的访问权限。。。我是说我的网络主机公司。。。对不起,我不能直接进入。。。我是说我的网络主机公司。。。对不起,这是真的吗?即使文本_列是“BMW330处于薄荷状态”?好的,它不是。你可能需要更多的过滤代码,或者按照Jan的建议使用Lucene或其他东西。即使文本栏是“BMW330处于薄荷状态”,这是真的吗?好的,不是。您可能需要更多的过滤代码,或者按照Jan的建议使用Lucene或其他什么。。。但这是一种非常骇人听闻的方法。。。但是非常黑的indeedLucene或Sphinx都是很好的搜索解决方案,可以很容易地与PHPinded集成!但是问题是他可能无法安装Sphinx,这就是我不推荐它的原因。Lucene或Sphinx都是很好的搜索解决方案,可以轻松地与phpinded集成!然而问题是,他可能无法安装斯芬克斯,这就是为什么我不推荐它。