40 lines
987 B
Go
40 lines
987 B
Go
package handler
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"github.com/gin-gonic/gin"
|
|
"knowledge-graph-backend/internal/model"
|
|
"knowledge-graph-backend/internal/service"
|
|
)
|
|
|
|
type SearchHandler struct {
|
|
service service.GraphService
|
|
}
|
|
|
|
func NewSearchHandler(svc service.GraphService) *SearchHandler {
|
|
return &SearchHandler{
|
|
service: svc,
|
|
}
|
|
}
|
|
|
|
// @Summary 搜索节点
|
|
// @Description 根据关键词搜索知识图谱中的节点
|
|
// @Produce json
|
|
// @Param q query string true "搜索关键词"
|
|
// @Success 200 {object} model.SearchResponse "成功"
|
|
// @Failure 400 {object} model.ErrorResponse "请求错误"
|
|
// @Failure 500 {object} model.ErrorResponse "内部错误"
|
|
// @Router /api/search [get]
|
|
func (h *SearchHandler) SearchNodes(c *gin.Context) {
|
|
query := c.Query("q")
|
|
if query == "" {
|
|
c.JSON(http.StatusBadRequest, model.ErrorResponse{Error: "bad_request", Message: "Query parameter 'q' is required"})
|
|
return
|
|
}
|
|
|
|
results := h.service.SearchNodes(query)
|
|
|
|
c.JSON(http.StatusOK, results)
|
|
}
|