我必须自己编写一个简单但有效且用户友好的搜索算法(使用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顺序? (结果列表顶部最匹配的名称或项目)