如何获得按相关性排序的Mysql结果集?

时间:2017-05-05 12:16:17

标签: php mysql sql search

我必须自己编写一个简单但有效且用户友好的搜索算法(使用PHP和MySQL)。到目前为止,我已经用4种不同的查询创建了这样的东西:

搜索关键字='某些内容'

SQL condion A = ... WHERE item_name REGEXP '[[:<:]]something[[:>:]]' ...;
SQL condion B = ... WHERE item_name LIKE 'something%' ...;
SQL condion C = ...  WHERE item_name LIKE '%something%' ...;
SQL condion D = ...  WHERE tag_name REGEXP '[[:<:]]something[[:>:]]' ...;

(用一点PHP)以这种方式生成我的列表:

$list= condition A resultset THAN
$list.= condition B resultset THAN 
$list.= condition C resultset THAN
$list.= condition D resultset 

输出(按搜索相关性排序)

ID:4  | something
ID:54 | somethingelse
ID:2  | awholelotofsomething
ID:99 | anything (which has a tag with something)

(我在php数组中收集每个sql查询结果的item_id,以防止在最终列表中重复)

是否可以在一个MySQL查询中创建这种搜索结果列表并仍保持正确的ROW顺序? (结果列表顶部最匹配的名称或项目)

0 个答案:

没有答案