使用全文检索搜索
全文检索具有易用和搜索速度快的优点,但是搜索结果的准确性和质量与用户查询使用的关键字和词组有很大的关系。对许多用户来说选择好的关键字或词组进行全文检索是一个挑战。大家在使用百度进行搜索时,会注意到其提供的搜索提示,自动补全和自动纠错的功能对于搜索到准确的结果有很大的帮助。对于企业应用来说,如果有这样的全文检索功能会大大改善用户使用系统进行搜索的体验,为用户带来价值。
Ebaas平台的基于ES的全文检索提供了近似百度的搜索体验,包括搜索提示和自动补全的功能。我们在上一个教程创建了“事务”数据类的全文检索索引。接下来,我们来测试一下全文检索的功能。
- 使用推荐的浏览器,在地址栏输入: http://localhost:8080
- 登录为demo1用户,密码为888。也可以用其他用户名登录
- 假设,您要搜索关于一个“编写发动机试验方案”的事务,可以在页头的搜索框中输入“编写”的文字,这时会在下拉菜单中出现与“编写”相关的搜索提示,如下图。这些提示都是在创建索引时根据数据的内容自动建立的,无需手工定义。
提示: 根据输入搜索文字的长短,会自动更新搜索提示的内容和数量。
- 从下拉菜单中选择“编写发动机试验方案”的提示,就能使用全文检索准确地找到该条事务并显示在列表中(见下图)
- 您可以点击该“事务”记录展开定制命令栏,使用相关的定制命令查看,修改或其它操作。
提示: 由于我们只在ES创建了“事务”的索引,所以搜索的结果都是“事务”数据。如果,我们数据模型中有多个数据类在ES创建了索引,搜索的结果可能来自多个数据类的数据。这时,Web界面会显示满足搜索条件的数据类的列表以及满足条件的数据记录个数,让用户选择其中一个数据类展示搜索结果。
那么对于后续添加或修改的事务数据记录,索引是否会自动同步呢?下面,我们测试一下新创建一条事务数据记录后,索引的自动更新功能。
- 在浏览器中打开“添加事务”的表单,创建一条关于“编写试验报告”的事务(如下图),提交到数据库
- 系统除了在关系数据库中创建新记录外,还会自动将新记录与ES索引实时同步
- 在页头的搜索框中输入“编写试验”的文字,会在下拉菜单中出现“编写试验报告”的提示(该提示是新加到ES索引中的)
- 选择“编写试验报告”提示后,自动执行全文检索,搜索到前面添加到系统的事务(见下图)
可以看到,我们只需经过简单的配置步骤,就能实现类似百度搜索的全文检索功能,而且维护方便灵活。