搜索关键字自动更正 - Oracle Endeca Server
做了几个Oracle Endeca 电商项目。每个项目都会有搜过关键字拼写错误更正(Spelling Correction)的需求。淘宝也有类似功能。
Oracle Endeca Sever提供了关键字拼写更正的功能。项目开发中一般只需要用这个Endeca预置功能,必要时做些调整就可。但是一直很好奇Endeca怎么知道用户拼写错了,怎么知道应该将用户输入的关键字更正为什么。闲来无事,查阅了一些资料。整理如下:
Endeca Server为关键字更正提供了两种方式:
1. 自动更正 (Auto Spelling Correction): 当用户输入的关键字在系统字典文件(dictionary file)里不存在时,系统直接将用户输入的关键字替换成系统认为用户真正想输入的关键字,然后用替换后的关键字去搜索,并显示搜索结果。 一般UI如下。
2. 拼写建议 (Explicit Spelling Suggestion): 当用户输入的关键字只能匹配到极少的结果, 如6个以下 (数量可配置),系统向用户展示搜索结果的同时从字典文件里找出匹配结果更多且和用户输入的关键字相似的关键字,并询问用户是否想切换成系统建议的关键字。如用户输入Cannon, 有3条结果,但是 Canon有几百上千条结果。系统就会向用户展示和Cannon匹配的3条结果,并且提示 Did you mean Canon? 用户点击 Canon 即可用 Canon 发起另一个搜索。
问题一: 系统字典文件是关键字建议的来源。字典文件是怎么来的呢?
字典文件里的所有单词来源于数据中所有可搜索的属性值。默认情况下,Endeca 将所有的可搜索的属性值加入字典文件。例如,数据里有300条商品。商量的可搜索属性为商品名称、颜色和描述。Endeca 就会将这300条商品中所有的商品名称、颜色和描述中含有的单词加到一个文件里,形成了字典文件。
但是当数据量很大时,字典文件就会很大,从而影响系统性能。于是Endeca提供了一个界面可以让用户配置哪些单词可以加到字典文件。从下减小字典文字的大小。配置界面如下图。
it occurs at least n times: 单词在数据源里出现过n次以上,才能被加入字典文件。商量名里有Kodar, 那Kodar在所有的商品可搜索属性里出现过5(n)次 以上才能被编入字典文件。
and is between n1 and n2 characters long: 单词长度在n1 - n2 个字符以内才能被编入字典文件。
问题二:Endeca 根据什么逻辑挑选字典文件里的单词呢?比如用户输入Kodaaar, 字典文件里有Kodar1, Kodar2, Kodar3, 那Endeca应该将Kodaaar替换成Kodar1 还是Kodar2或Kodar3呢?
暂时无解。欢迎各路大神留言指点。
参考资料:
https://docs.oracle.com/cd/E40518_01/server.761/es_dev/src/cdg_spelldym_about.html
https://docs.oracle.com/cd/E29584_01/webhelp/mdex_advDev/src/tadv_spelldym_configuring_in_devstudio.html
搜索关键字自动更正 - Oracle Endeca Server的更多相关文章
- jQuery的搜索关键词自动匹配插件
相信许多人都会用过搜索栏自动匹配关键词的功能,无论是像google的专业搜索引擎,还是普通的网站,现在许多都用上了这种关键词匹配技术,本文介绍的用jQuery实现的关键词匹配技术,当然要整合到自己的系 ...
- 在 Angular 中实现搜索关键字高亮
在 Angular 中,我们不应该试图直接修改 DOM 的内容,当需要更新 DOM 内容的时候,应该修改的其实是我们的数据模型,也就是 $scope 中的数据,Angular 会帮助我们将修改之后的数 ...
- Oracle Dedicated server 和 Shared server(专用模式 和 共享模式) 说明(转)
一. 官网说明 在DBCA 建库的时候,有提示让我们选择连接类型,这里有两种类型:专用服务器模式和共享服务器模式.默认使用专用模式.如下图: Oracle 官方文档对这两种文档的说明如下: Abou ...
- jQuery搜索框自动补全功能插件实现-autocomplete.js
最近用nodeclub实现股票的输入关键字自动补全股票信息进行搜索功能,原先用jQuery-ui,结果jQuery-ui库太大,所以考虑用其他插件,最终选择使用autocomplete.js,控件简单 ...
- Oracle WebLogic Server 12c 新特性
美国时间2011年 12月9日,Oracle公司正式发布WebLogic 12c版本,c是cloud的缩写.截止当前(2013年8月)最新版本为Oracle WebLogic Server 12c ( ...
- Django项目:CRM(客户关系管理系统)--26--18PerfectCRM实现King_admin搜索关键字
search_fields = ('name','qq',) 登陆密码设置参考 http://www.cnblogs.com/ujq3/p/8553784.html search_fields = ( ...
- Oracle Database Server 'TNS Listener'远程数据投毒漏洞(CVE-2012-1675)解决
环境:Windows 2008 R2 + Oracle 10.2.0.3 应用最新bundle patch后,扫描依然报出漏洞 Oracle Database Server 'TNS Listener ...
- Linux下通过脚本自动备份Oracle数据库并删除指定天数前的备份
说明: Oracle数据库服务器操作系统:CentOSIP:192.168.0.198端口:1521SID:orclOracle数据库版本:Oracle11gR2 具体操作: 1.root用户登录服务 ...
- Excel 自动更正
当有复杂的字段需要重复填写怎么办呢,比如××银行卡号,××电话号码,××公司地址等.可以使用excel的"自动更正"功能解决. 1. Excel 2010的自动更正选项在哪里呢 2 ...
随机推荐
- 搭建互联网架构学习--006--duboo准备之zk集群部署安装
dubbo集群部署安装依赖于zookeeper,所以先安装zookeeper集群. 1.准备三台机器做集群 2.配置 配置java环境 ,2,修改操作系统的/etc/hosts文件,添加IP与主机名 ...
- PHP 批量获取 百度搜索结果 网址列表
<?php set_time_limit(0); function curl($url){ $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $u ...
- Java_反射机制详解
本篇文章依旧采用小例子来说明,因为我始终觉的,案例驱动是最好的,要不然只看理论的话,看了也不懂,不过建议大家在看完文章之后,在回过头去看看理论,会有更好的理解. 下面开始正文. [案例1]通过一个对象 ...
- 解决python3与python2的pip命令冲突问题冲突(window版)
解决方法再上一篇有大概讲解: python开发环境安装配置 这里做一些补充: 上一篇说过,删除python3和python2中的python.exe文件后关闭dos窗口,重新打开dos,就可以进行安装 ...
- Java正则表达式防注入小例子
/** * 第一行匹配特殊字符: * 第二行匹配开头和结尾都有空格的: * 第三行匹配结尾有空格的 * */ private Boolean DetermineChar(String reqData, ...
- PTA (Advanced Level) 1021 Deepest Root
Deepest Root A graph which is connected and acyclic can be considered a tree. The hight of the tree ...
- JS实现年月日三级联动+省市区三级联动+国家省市三级联动
开篇随笔:最近项目需要用到关于年月日三级联动以及省市区三级联动下拉选择的功能,于是乎网上搜了一些做法,觉得有一些只是给出了小的案例或者只有单纯的js还不完整,却很难找到详细的具体数据(baidu搜索都 ...
- Ionic APP 热更新 之 产品发布状态下的热更新搭建,去local-dev-addon插件
上一篇,我们介绍了在本地开发环境下的ionic项目热更新测试, 本文,我们将详细说明如何在去掉cordova-hot-code-push-local-dev-addon插件的情况下,实现热更新. 使用 ...
- 【手记】解决启动SQL Server Management Studio 17时报Cannot find one or more components...的问题
刚装好SSMS 17.1准备体验,弹出: 一番搜索,普遍办法都是安装VS2015独立shell.删除某个注册表项什么的,没用,首先这个shell我是装了的,然后也没有那个注册表项.我自己尝试过重装sh ...
- 导出为shape文件
private void barButtonItem2_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)//导出为s ...