我正在实施基于标签的搜索,其中用户可以插入多个标签以搜索特定的实体。一个实体可以有多个标签。但是没有必要让用户搜索的所有标签都列在结果中。通过选择的数量排序
例如,当用户输入三个标签,说:“鞋”,“皮革”,“正式”,有这些标签中的一个或多个每一个实体可以在列表中。
我使用union来返回具有这些关键字中的任何一个的实体的完整列表,但问题是我希望它们根据在类别中找到的标记的数量进行排序。
例如,有三个标签实体,“鞋”,“皮革”,“正式”,应该来正上方,然后只有一个或两个人的实体。有没有任何SQL功能来执行这种搜索?
[编辑]
我的表布局是:
实体表
- ENTITY_NAME
- ENTITY_ID(自动增量主键)
标签表
- 标签
- ENTITY_ID
我无法来解决我的目的。现在使用此查询:
select entity.entity_name from entity.entity_id join tags on tags.entity_id=entity.entity_id where tags.tag="first tag"
union
select entity.entity_name from entity.entity_id join tags on tags.entity_id=entity.entity_id where tags.tag="second tag"
union
select entity.entity_name from entity.entity_id join tags on tags.entity_id=entity.entity_id where tags.tag="third tag"
正如我所说的,这并不能解决我的目的。
你目前的表格布局是什么?你目前的查询是什么? – Jocelyn
编辑我的问题,只需一分钟 – Sourabh