我正在實施基於標籤的搜索,其中用戶可以插入多個標籤以搜索特定的實體。一個實體可以有多個標籤。但是沒有必要讓用戶搜索的所有標籤都列在結果中。通過選擇的數量排序
例如,當用戶輸入三個標籤,說:「鞋」,「皮革」,「正式」,有這些標籤中的一個或多個每一個實體可以在列表中。
我使用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