搜索系统4:简单的通用搜索模块
来源:互联网 发布:造价师网络教育 编辑:程序博客网 时间:2024/06/01 10:17
上文说的导入业务数据,实际上说的构建索引。有了索引,就可以提供搜索服务了。如果使用solrj,比较简单:
SolrQuery query = new SolrQuery();
query.set("q", "*:*");
//传入的选择条件
query.setStart(0);
query.setRows(500);
QueryResponse rsp = server.query(query);
List list = rsp.getBeans(ViewItem.class);
这里需要定义一下ViewItem由那些字段组成,并且把这些字段与solr的schemal里配置的字段关连起来。如下:
class ViewItem {
@Field
private String id;
@Field
private String name;
对于传入的条件,可以先用一个Map的params传进来,再遍历设置一下:
List fqs = new ArrayList();
for(Entry entry:params.entrySet()){
fqs.add(entry.getKey()+":"+entry.getValue());
}
if (fqs.size() > 0) {
String[] fqsArray = fqs.toArray(new String[0]);
query.setFilterQueries(fqsArray);
}
如果要把这代码做得再通用一些,可以把collection(相当于数据表)与返回实体类也传进来,定义如下Controller接口:
public List queryPage(String collection,String resultCls, int start,int pageSize,HttpServletRequest req)
这样,传那个collection,返回什么对象类型都可以自定义了。至于过滤的条件,可以用param.开头的参数来定义。比如:
要查询name中包含"中中"的,那么参数就是param.name='中中',再把这个解析为上面传入的选择条件(params)就可以了。
当然实际的业务情况比这复杂得多,还有大于小于、转换等情况,在后面遇到实际的项目再说。
比如下面的这种搜索需求,就不能用这样简单的搜索,因为还要对"拼团“这个词做特殊处理。
SolrQuery query = new SolrQuery();
query.set("q", "*:*");
//传入的选择条件
query.setStart(0);
query.setRows(500);
QueryResponse rsp = server.query(query);
List list = rsp.getBeans(ViewItem.class);
这里需要定义一下ViewItem由那些字段组成,并且把这些字段与solr的schemal里配置的字段关连起来。如下:
class ViewItem {
@Field
private String id;
@Field
private String name;
对于传入的条件,可以先用一个Map的params传进来,再遍历设置一下:
List fqs = new ArrayList();
for(Entry entry:params.entrySet()){
fqs.add(entry.getKey()+":"+entry.getValue());
}
if (fqs.size() > 0) {
String[] fqsArray = fqs.toArray(new String[0]);
query.setFilterQueries(fqsArray);
}
如果要把这代码做得再通用一些,可以把collection(相当于数据表)与返回实体类也传进来,定义如下Controller接口:
public List queryPage(String collection,String resultCls, int start,int pageSize,HttpServletRequest req)
这样,传那个collection,返回什么对象类型都可以自定义了。至于过滤的条件,可以用param.开头的参数来定义。比如:
要查询name中包含"中中"的,那么参数就是param.name='中中',再把这个解析为上面传入的选择条件(params)就可以了。
当然实际的业务情况比这复杂得多,还有大于小于、转换等情况,在后面遇到实际的项目再说。
比如下面的这种搜索需求,就不能用这样简单的搜索,因为还要对"拼团“这个词做特殊处理。
阅读全文
0 0
- 搜索系统4:简单的通用搜索模块
- 图搜索的通用算法
- Android通用的搜索框
- 简单的全文搜索
- 简单的关联搜索
- 简单的文件搜索
- 简单的暴力搜索
- 简单的暴力搜索
- 简单的搜索
- 简单的搜索实现
- 垂直搜索 vs 通用搜索
- pthon 模块的搜索路径
- SharePoint2010 搜索(2) 简单的搜索
- 朴素搜索dfs, 简单的剪枝搜索
- 网站制作---科讯万能搜索系统的简单实用教程
- 搜索算法的通用优化方法
- 搜索算法的通用优化方法
- 深度优先搜索算法的通用解法
- sql语句实现查询
- matlab图像光照效果模拟
- Ostap and Grasshopper
- HDU 5890 Eighty seven (DP + bitset) 优化 (2016 青岛网络赛)
- TCP与IP协议
- 搜索系统4:简单的通用搜索模块
- win10 64位系统 Visual Studio 2010 OpenGL配置
- ue4学习资料
- 代码
- cmd编写mysql注意事项
- 挖掘需求
- R语言编码规范 · 谷歌发布
- Urbanization
- 运动会 循环图