Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
OpenDocCN
yii2_fecshop
提交
ec664a54
Y
yii2_fecshop
项目概览
OpenDocCN
/
yii2_fecshop
通知
18
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Y
yii2_fecshop
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
ec664a54
编写于
10月 28, 2017
作者:
T
Terry
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
搜索功能:新增sku精准搜索
上级
efbe92a1
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
59 addition
and
42 deletion
+59
-42
services/search/MongoSearch.php
services/search/MongoSearch.php
+19
-10
services/search/XunSearch.php
services/search/XunSearch.php
+40
-32
未找到文件。
services/search/MongoSearch.php
浏览文件 @
ec664a54
...
...
@@ -219,17 +219,26 @@ class MongoSearch extends Service implements SearchInterface
*/
protected
function
actionGetSearchProductColl
(
$select
,
$where
,
$pageNum
,
$numPerPage
,
$product_search_max_count
)
{
$filter
=
[
'pageNum'
=>
$pageNum
,
'numPerPage'
=>
$numPerPage
,
'where'
=>
$where
,
'product_search_max_count'
=>
$product_search_max_count
,
'select'
=>
$select
,
];
//var_dump($filter);exit;
$collection
=
$this
->
fullTearchText
(
$filter
);
// 先进行sku搜索,如果有结果,说明是针对sku的搜索
$searchText
=
$where
[
'$text'
][
'$search'
];
$productM
=
Yii
::
$service
->
product
->
getBySku
(
$searchText
);
if
(
$productM
)
{
$collection
[
'coll'
][]
=
$productM
;
$collection
[
'count'
]
=
1
;
}
else
{
$filter
=
[
'pageNum'
=>
$pageNum
,
'numPerPage'
=>
$numPerPage
,
'where'
=>
$where
,
'product_search_max_count'
=>
$product_search_max_count
,
'select'
=>
$select
,
];
//var_dump($filter);exit;
$collection
=
$this
->
fullTearchText
(
$filter
);
}
$collection
[
'coll'
]
=
Yii
::
$service
->
category
->
product
->
convertToCategoryInfo
(
$collection
[
'coll'
]);
//var_dump($collection);
return
$collection
;
}
...
...
services/search/XunSearch.php
浏览文件 @
ec664a54
...
...
@@ -132,44 +132,52 @@ class XunSearch extends Service implements SearchInterface
protected
function
fullTearchText
(
$select
,
$where
,
$pageNum
,
$numPerPage
,
$product_search_max_count
)
{
$XunSearchQuery
=
$this
->
_searchModel
->
find
()
->
asArray
();
$XunSearchQuery
->
fuzzy
(
$this
->
fuzzy
);
$XunSearchQuery
->
synonyms
(
$this
->
synonyms
);
if
(
is_array
(
$where
)
&&
!
empty
(
$where
))
{
if
(
isset
(
$where
[
'$text'
][
'$search'
])
&&
$where
[
'$text'
][
'$search'
])
{
$XunSearchQuery
->
where
(
$where
[
'$text'
][
'$search'
]);
}
else
{
return
[];
$searchText
=
$where
[
'$text'
][
'$search'
];
$productM
=
Yii
::
$service
->
product
->
getBySku
(
$searchText
);
$productIds
=
[];
if
(
$productM
)
{
$productIds
[]
=
$productM
[
'_id'
];
}
else
{
$XunSearchQuery
=
$this
->
_searchModel
->
find
()
->
asArray
();
$XunSearchQuery
->
fuzzy
(
$this
->
fuzzy
);
$XunSearchQuery
->
synonyms
(
$this
->
synonyms
);
if
(
is_array
(
$where
)
&&
!
empty
(
$where
))
{
if
(
isset
(
$where
[
'$text'
][
'$search'
])
&&
$where
[
'$text'
][
'$search'
])
{
$XunSearchQuery
->
where
(
$where
[
'$text'
][
'$search'
]);
}
else
{
return
[];
}
foreach
(
$where
as
$k
=>
$v
)
{
if
(
$k
!=
'$text'
)
{
$XunSearchQuery
->
andWhere
([
$k
=>
$v
]);
}
}
}
foreach
(
$where
as
$k
=>
$v
)
{
if
(
$k
!=
'$text'
)
{
$XunSearchQuery
->
andWhere
([
$k
=>
$v
]);
$XunSearchQuery
->
orderBy
([
'score'
=>
SORT_DESC
]);
$XunSearchQuery
->
limit
(
$product_search_max_count
);
$XunSearchQuery
->
offset
(
0
);
$search_data
=
$XunSearchQuery
->
all
();
$data
=
[];
foreach
(
$search_data
as
$one
)
{
if
(
!
isset
(
$data
[
$one
[
'spu'
]]))
{
$data
[
$one
[
'spu'
]]
=
$one
;
}
}
}
$XunSearchQuery
->
orderBy
([
'score'
=>
SORT_DESC
]);
$XunSearchQuery
->
limit
(
$product_search_max_count
);
$XunSearchQuery
->
offset
(
0
);
$search_data
=
$XunSearchQuery
->
all
();
$data
=
[];
foreach
(
$search_data
as
$one
)
{
if
(
!
isset
(
$data
[
$one
[
'spu'
]]))
{
$data
[
$one
[
'spu'
]]
=
$one
;
$count
=
count
(
$data
);
$offset
=
(
$pageNum
-
1
)
*
$numPerPage
;
$limit
=
$numPerPage
;
$productIds
=
[];
foreach
(
$data
as
$d
)
{
$productIds
[]
=
new
\
MongoDB\BSON\ObjectId
(
$d
[
'_id'
]);
}
}
$count
=
count
(
$data
);
$offset
=
(
$pageNum
-
1
)
*
$numPerPage
;
$limit
=
$numPerPage
;
$productIds
=
[];
foreach
(
$data
as
$d
)
{
$productIds
[]
=
new
\
MongoDB\BSON\ObjectId
(
$d
[
'_id'
]);
$productIds
=
array_slice
(
$productIds
,
$offset
,
$limit
);
}
$productIds
=
array_slice
(
$productIds
,
$offset
,
$limit
);
if
(
!
empty
(
$productIds
))
{
$query
=
$this
->
_productModel
->
find
()
->
asArray
()
->
select
(
$select
)
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录