Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/246.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何从搜索表单中获得最相关的点击_Php_Mysql_Mysqli - Fatal编程技术网

Php 如何从搜索表单中获得最相关的点击

Php 如何从搜索表单中获得最相关的点击,php,mysql,mysqli,Php,Mysql,Mysqli,我正在为我的网页制作搜索表单,无意中发现了以下信息: animal animal | country ---------------- Dog | USA Cat | Canada Mouse | Sweden Snake | New Zealand 在我的搜索表单中,我可能希望搜索以下内容: 1) “美国狗”或“美国狗” 2) “新西兰蛇”或“新西兰蛇” 我想我必须把输入的文本分开,然后设法找到正确的参数并搜索正确的列 问题是我将如何生成SQL语句以获得最准确和相关的命中

我正在为我的网页制作搜索表单,无意中发现了以下信息:

animal

animal | country
----------------
Dog    | USA 
Cat    | Canada
Mouse  | Sweden
Snake  | New Zealand
在我的搜索表单中,我可能希望搜索以下内容:

1) “美国狗”或“美国狗”

2) “新西兰蛇”或“新西兰蛇”

我想我必须把输入的文本分开,然后设法找到正确的参数并搜索正确的列

问题是我将如何生成SQL语句以获得最准确和相关的命中率?
或者有人能告诉我怎么做吗?

你可以在
mysql
中使用全文搜索。比如说,

SELECT * FROM `table`
WHERE MATCH(animal) AGAINST ('$your_search_string')
OR MATCH(country) AGAINST ('$your_search_string');

您可以在
mysql
中使用全文搜索。比如说,

SELECT * FROM `table`
WHERE MATCH(animal) AGAINST ('$your_search_string')
OR MATCH(country) AGAINST ('$your_search_string');

MySQL提供了几种全文搜索索引模式,请调查这些模式是否适合您。如果你需要更强大的功能,有Lucene和基于它的东西,比如Solr和许多类似的专门从事全文搜索的项目。如果你决定使用全文搜索,请确保你有足够的测试数据,因为任何检索到超过总结果50%的内容都被视为“失败搜索”。默认值为<3(或是4?)个字母作为搜索词也被视为“搜索失败”。请注意。我的表格包含每个cols中的国家和动物,当我搜索“cat canada”时,它必须匹配这两个词,并输出精确匹配的结果。当然,一只动物也可以位于多个国家。MySQL提供了几种模式的全文搜索索引,请调查是否适合您。如果你需要更强大的功能,有Lucene和基于它的东西,比如Solr和许多类似的专门从事全文搜索的项目。如果你决定使用全文搜索,请确保你有足够的测试数据,因为任何检索到超过总结果50%的内容都被视为“失败搜索”。默认值为<3(或是4?)个字母作为搜索词也被视为“搜索失败”。请注意。我的表格包含每个col中的国家和动物,当我搜索“cat canada”时,它必须匹配这两个单词,并输出精确匹配。当然,一只动物也可以位于多个国家。两个col必须匹配搜索字符串,因此如果我在搜索框中键入:cat canada,我必须检查两个col是否匹配。不要认为它是通过使用或语句实现的?请查看此文档。这可能会对您有所帮助:两个col必须匹配搜索字符串,因此如果我在搜索框中键入:cat canada,我必须检查两个col是否匹配。不要认为它是通过使用或语句实现的?请查看此文档。这可能会帮助您: