iStore 产品搜索
Sandeep Kuttiyatur
CRM Ecommerce
Oracle Corporation
摘要
这篇文章从整体上介绍了iStore产品搜索的特征以及依靠,同时也简单的介绍了如何去创建。
章节
iStore产品搜索是什么?
创建产品搜索的必要条件
发现问题的处理
请注意:本文不能代替你的iStore and iMarketing Implementation Guide.本文的目的是让你快速的了解iStore产品搜索的特点及如何一步步地去创建。
参考
需要更多资料,请阅读以下资料。
iStore and iMarketing Implementation Guide(Part#A83719-02),Chapter 4,Page 4-3- onwards
你也可以用Metalink帐号访问 the Implementation Guides
什么是iStore产品搜索
iStore产品搜索本质上是为iStore店主的客户提供搜索他们需要的产品的功能。
当产品清单被载入时,产品信息同时也通过并发程序被载入IBE_CT_MEDIA_SEARCH 表。它只需要运行一次。
搜索表IBE_CT_IMEDIA_SEARCH 是把表MTL_SYSTEM_ITEMS_TL 反向规格化。通过 建立在产品清单表上的数据库触发器可以保持搜索表IBE_CT_IMEDIA_SEARCH的不断更新。
建立产品搜索
iStore用户可以使用两种有效的搜索方式。
目录级别搜索
如果想让目录级别搜索有效,需要运行并发程序生成搜索表 IBE_CT_IMEDIA_SEARCH
部分级别索引
如果想让部分级别索引有效,需要先运行iStore部分搜索插入程序,然后运行iStore部分搜索刷新程序组装搜索表IBE_SECTION_SEARCH
创建目录级别索引的步骤:
在客户首页,代理商需要在每个主组织下给每个商品唯一的名称来建立自己的清单,而不能让目录名称留空,不唯一或者是空的。此外,如果你想一个商品被搜索到,需要将该商品的web 哦ptions 下的web enabled flag属性设置成PUBLISHED。你也可以通过查询MTL_SYSTEM_ITEMS_B清单表来检查该字段。运行并发程序,生成搜索表数据和创建媒介文本索引来增强搜索关键字的能力。
运行并发程序
使用数据库管理员身份登陆数据库服务器,选择iStore
Concurrent Progams Manager职责.(如果每没有该职责,用系统管理员给自己分配该职责)
在弹出的窗口中,选择单个请求,点击OK
运行在iStore搜索中插入程序
提交请求后,记录下该请求编号,以便于跟踪请求状态。
当前管理器将调用IBEVCSMV.sql脚本,以每45分钟250000条记录的速度把产品信息从清单表倒入到搜索表中。如果要添加其他的产品属性到搜索表中,必须修改IBEVCSMV.sql脚本。
创建部分级别索引的步骤
按照以上创建目录级别索引的步骤生成搜索表IBE_CT_IMEDIA_SEARCH。
运行刷新iStore部分搜索程序,以便部分搜索功能有效。、
运行当前程序:
使用数据库管理员身份登陆数据库服务器,选择iStore
Concurrent Progams Manager职责.(如果每没有该职责,用系统管理员给自己分配该职责)
在弹出的窗口中,选择单个请求,点击OK
运行刷新iStore部分搜索程序
注意:因为批处理要删除搜索表的数据,要保证有足够的回滚段空间保证程序完成。
以下搜索功能的属性需要在iStore应用级别来创建。
每页搜索的行数
这个属性设置每页显示的行数,如果没有设置,默认每页20行
没有找到记录
这个属性设置最大搜索结果,如果用户输入了一个普通的关键字,而非保留搜索关键字,搜索进程将停止。如果用户没有设置该属性,默认将最大返回500条记录。
利用目录搜索
这个属性决定了首页的折叠式搜索菜单是否允许目录索引和部分索引。
选择是,按目录列出发布的产品。。
选择否,按部分列出发布的产品。
以下是与搜索有关的SQL脚本和Java/Jsp文件
一个查询从jtf_dsp_section_items, jtf_dsp_msite_sct_items
获取inventory_item_id, description 和
category id 导入到ibe_ct_media_search
表中。Search.java是执行该查询的主要java程序。该搜索查询主要是根据输入的text内容来搜索。
i.category_id,
score(100) nearness
from ibe_ct_imedia_search i
where contains (i.indexed_search,
'laptop', 100) > 0
and i.language = userenv('LANG')
and i.category_id = i.category_id
and i.organization_id = 204
and exists (
select 1
from jtf_dsp_section_items s,
jtf_dsp_msite_sct_items b
where s.section_item_id =
b.section_item_id
and b.mini_site_id = 10020
and s.inventory_item_id =
i.inventory_item_id
and (s.end_date_active > sysdate or
s.end_date_active is null)
and s.start_date_active < sysdate)
and rownum < 200
order by nearness
运行以上查询,需要运行下边的脚本在indexed_search来创建索引
create index ibe_ct_imedia_search_im on
ibe_ct_imedia_search (indexed_search)
indextype is ctxsys.context;