Commit 586ac3f4 by liuxinlin

feat: 修改搜索接口

parent c7d8c077
HOST=m.julyedu.com HOST=localhost
PORT=80 PORT=3000
module.exports = {
"/homeApi": {
target: "https://fast.julyedu.com",
changeOrigin: true,
secure: false,
pathRewrite: { "^/homeApi": "" },
},
"/baseApi": {
target: "https://api.julyedu.com",
changeOrigin: true,
secure: false,
pathRewrite: { "^/baseApi": "" },
},
"/searchApi": {
target: "https://search.julyedu.com",
changeOrigin: true,
secure: false,
pathRewrite: { "^/searchApi": "" },
},
"/passportApi": {
target: "https://passport.julyedu.com",
changeOrigin: true,
secure: false,
pathRewrite: { "^/passportApi": "" },
},
"/record": {
target: "https://record.julyedu.com",
changeOrigin: true,
secure: false,
pathRewrite: { "^/record": "" },
},
"/mApi": {
target: "https://m.julyedu.com",
changeOrigin: true,
secure: false,
pathRewrite: { "^/mApi": "" },
},
"/ai-search": {
target: "https://ai-search.julyedu.com",
changeOrigin: true,
secure: false,
pathRewrite: { "^/ai-search": "" },
},
}
var API = { var API = {
'www': 'http://www-test.julyedu.com', 'www': 'http://www-test.julyedu.com',
'home': 'https://fast.julyedu.com', 'home': 'http://localhost:3000/homeApi',
'search-api': 'http://search-test.julyedu.com', 'search-api': 'http://localhost:3000/searchApi',
'passport-api': 'http://passport-test.julyedu.com', 'passport-api': 'http://localhost:3000/passportApi',
'base-api': 'https://api.julyedu.com', 'base-api': 'http://localhost:3000/baseApi',
'record': 'record.julyedu.com:8001', 'record': 'http://localhost:3000/record',
'process-api': 'ws:process-test.julyedu.com:9502', 'process-api': 'ws:process-test.julyedu.com:9502',
'm': 'http://m-test.julyedu.com', 'm': 'http://localhost:3000/mApi',
'ai-search': 'http://localhost:3000/ai-search',
} }
...@@ -31,6 +31,7 @@ const openBrowser = require("react-dev-utils/openBrowser") ...@@ -31,6 +31,7 @@ const openBrowser = require("react-dev-utils/openBrowser")
const paths = require("../config/paths") const paths = require("../config/paths")
const configFactory = require("../config/webpack.config") const configFactory = require("../config/webpack.config")
const createDevServerConfig = require("../config/webpackDevServer.config") const createDevServerConfig = require("../config/webpackDevServer.config")
const proxy = require("../config/proxy.js")
const useYarn = fs.existsSync(paths.yarnLockFile) const useYarn = fs.existsSync(paths.yarnLockFile)
const isInteractive = process.stdout.isTTY const isInteractive = process.stdout.isTTY
...@@ -97,8 +98,8 @@ checkBrowsers(paths.appPath, isInteractive) ...@@ -97,8 +98,8 @@ checkBrowsers(paths.appPath, isInteractive)
webpack, webpack,
}) })
// Load proxy config // Load proxy config
const proxySetting = require(paths.appPackageJson).proxy const proxyConfig = proxy
const proxyConfig = prepareProxy(proxySetting, paths.appPublic) // const proxyConfig = prepareProxy(proxySetting, paths.appPublic)
// Serve webpack assets generated by the compiler over a web server. // Serve webpack assets generated by the compiler over a web server.
const serverConfig = createDevServerConfig( const serverConfig = createDevServerConfig(
proxyConfig, proxyConfig,
......
import React, { PureComponent } from "react" import React, { PureComponent } from "react"
import SearchHeader from "./searchHead" import SearchHeader from "./searchHead"
import VList from "src/common/VList" import VList from "src/common/VList"
import { http, getParam } from "src/utils" import { getParam } from "src/utils"
import { aiSearchInstance } from "src/utils/http"
import "./search-result.scss" import "./search-result.scss"
import Recommendation from "./recommendation" import Recommendation from "./recommendation"
import throttle from "lodash/throttle" import throttle from "lodash/throttle"
...@@ -47,15 +48,35 @@ class SearchResult extends PureComponent { ...@@ -47,15 +48,35 @@ class SearchResult extends PureComponent {
} }
getCourses = (word) => { getCourses = (word) => {
http aiSearchInstance
.get(`${API["search-api"]}/search/${word}?type=v2-course&page=1`) .post(
`${API["ai-search"]}/aisearch/v1/fusion`,
{
search_params: {
query: word,
es_fragment_size: 200,
es_number_of_fragments: 3,
es_size: 40,
es_slop: 1,
milvus_limit: 40,
timeout: 5,
},
},
{
headers: {
"Content-Type": "application/json",
},
}
)
.then((res) => { .then((res) => {
const data = res.data const data = res.data
console.log("data: ", data)
const { response, status_code } = data
if (data.errno === 0) { if (status_code === 200) {
this.setState({ this.setState({
courseList: data.data.info["search_data"].course, courseList: response,
resultCount: data.data.info["search_data"].num, resultCount: response.length,
}) })
} }
}) })
...@@ -164,15 +185,35 @@ class SearchResult extends PureComponent { ...@@ -164,15 +185,35 @@ class SearchResult extends PureComponent {
className="title text-overflow-2" className="title text-overflow-2"
dangerouslySetInnerHTML={{ dangerouslySetInnerHTML={{
__html: __html:
item.highlight?.course_title?.length > 0 item.highlight?.["course_title.pinyin"]?.length > 0
? item.highlight.course_title[0] ? item.highlight["course_title.pinyin"][0]
: item.course_title, : item.course_title,
}} }}
></p> ></p>
<p className="des text-overflow-1"> {/* <p
{item.simpledescription} className="des text-overflow-1"
</p> dangerouslySetInnerHTML={{
<Bottom item={item} /> __html:
item.highlight?.["course_stage.pinyin"]?.length > 0
? item.highlight["course_stage.pinyin"][0]
: "",
}}
></p> */}
<p
className="des text-overflow-1"
dangerouslySetInnerHTML={{
__html:
item.highlight?.["course_lesson.pinyin"]?.length > 0
? item.highlight["course_lesson.pinyin"][0]
: "",
}}
></p>
<div className="course_tags text-overflow-1">
{item.course_tags.map((tag, index) => (
<span key={index}>{tag}</span>
))}
</div>
{/* <Bottom item={item} /> */}
</div> </div>
) )
const status = const status =
......
...@@ -55,6 +55,19 @@ ...@@ -55,6 +55,19 @@
margin-top: 10px; margin-top: 10px;
} }
.course_tags {
margin-top: 10px;
font-size: $font_12;
color: #777;
span {
display: inline-block;
margin-right: 5px;
padding: 2px 5px;
background-color: #f0f0f0;
border-radius: 4px;
}
}
.price { .price {
color: $red; color: $red;
font-size: $font_16; font-size: $font_16;
......
...@@ -12,4 +12,13 @@ const instance = axios.create({ ...@@ -12,4 +12,13 @@ const instance = axios.create({
HTTP_PLAT: 5, HTTP_PLAT: 5,
}, },
}) })
export const aiSearchInstance = axios.create({
headers: {
HTTP_PLAT_FORM: 5,
HTTP_PLAT: 5,
},
withCredentials: true,
})
export default instance export default instance
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment