![]() |
1
6
您可以在一个查询中使用mysql中的“union all”来实现这一点。 只需循环访问php中的令牌,为每个令牌创建一个union all: 例如,如果标记是“x”、“y”和“z”,则查询可能如下所示
ORDER子句应该将整个结果集作为一个结果集进行操作,这正是您需要的。 在性能方面,它不会那么快(我猜是这样),但是对于数据库,速度方面的主要开销通常是从PHP向数据库引擎发送查询并接收结果。使用这种技术,这种情况只发生一次而不是每个令牌一次,所以性能会提高,我只是不知道是否足够。 |
![]() |
2
3
我知道这不是你问的问题的严格答案 但是如果您的表是数千行而不是数百万行 ,那么全文解决方案可能是最好的方法。 在MySQL中,当您在索引列上使用match时,您提供的每个关键字都将得到一个相关性得分(大致按每个关键字被提到的次数计算),这将比您的方法更准确,而且对于多个关键字肯定更有效。 请参见这里: http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html |
![]() |
3
1
如果您使用的是union all模式,那么您可能还希望在查询中包含以下部分:
虽然这是一个非常简单的例子,但它确实为每个结果提供了匹配的频率,并且可以从一个伪秩开始。 |
![]() |
4
0
如果使用为搜索任务而不是数据库设计的数据结构,您可能会获得更好的性能。例如,您可以尝试在 inverted index . 然而,你可能不想自己写,而是想看看 Lucene 大部分工作都是为你做的。 |
![]() |
Jacco · 未能格式化我的日期以在php中正确工作 1 年前 |
![]() |
jay ram · 如何在URL核心php中从API获取JSON? 1 年前 |
|
Ishwarya A · php电子表格在浏览器中显示多张excel 1 年前 |