上QQ阅读APP看书,第一时间看更新
1.4 信息检索及其构建
用户可利用Head工具,通过HTTP传递参数的方式来构造一个简单的信息检索语句。图1.13展示了在指定的myfirstindex索引的share中,搜索字段为“location”且其值为“Shanghai”的检索请求的构建方式。在图1.13右侧的hits结果中可以看到返回的结果。其中,“hits”表示命中的检索集合,“total”表示命中1条记录,“max_score”是其评分。另外,在图1.13中的URL构建查询语句时,“_search”表示搜索RESTful接口;q后代表查询条件;q后的“=”是基于Lucene语法的查询表达式;中文需要urlencode字符编码,特殊字符需要转义处理。
图1.13 检索结果
:在基于Lucene的查询语法中,查询域Field指定从哪个域中寻找查询词;查询域和查询词之间用分号分隔(如title:“中国”);支持两种通配符?和*的查询;支持模糊查询。
综上所述,查询流程包括:
(1)构造查询条件:可以基于Lucene的查询语法进行构建,也可以基于Query DSL查询表达式进行构建。有关第二种方式的介绍参见第2章中的说明,其灵活性更好。
(2)提交给Elasticsearch。
(3)返回命中集hits结果。
:Query DSL是用表达式的类似JSON的方式来描述查询语句,是一个通用的查询框架,可以通过一组通用的查询API为用户构建适合不同类型的ORM(Object Relational Mapping)框架或查询语句,Query DSL支持的平台包括Elasticsearch、SQL、RDF、Lucene等。ORM框架采用元数据来描述对象——关系映射细节,元数据一般采用XML格式,并且存放在专门的对象——映射文件中。