• Home
  • About
    • 吾青 photo

      吾青

      么西么西,听得到吗?

    • Learn More
    • Github
    • Steam
  • Posts
    • All Posts
    • All Tags
  • Projects

solr分字段及分页查询

08 May 2019

Reading time ~1 minute

设置查询字段

在schema配置文件中加入要设置的字段,并把类型设置为先前设置好的text_ik,这样就可以使用ik分词器了。

<field name="resume_content" type="text_ik" indexed="true" stored="true"/>
<field name="name" type="text_ik" indexed="true" stored="true"/>
<field name="gender" type="text_ik" indexed="true" stored="true"/>
<field name="age" type="text_ik" indexed="true" stored="true"/>
<field name="work_seniority" type="text_ik" indexed="true" stored="true"/>
<field name="edu_background" type="text_ik" indexed="true" stored="true"/>
<field name="cellphone" type="text_ik" indexed="true" stored="true"/>
<field name="email" type="text_ik" indexed="true" stored="true"/>
<field name="file_name" type="text_ik" indexed="true" stored="true"/>

具体实现代码

public Map<String, Object> queryResume(Map<String, String> conditions, int pageNumber) throws SolrServerException, IOException {
	Page page = ResumeBasicServiceImpl.getByPage(conditions, pageNumber);
	if (page.getCount() > 0) {
		for (int i = 0; i < page.getData().size(); i++) {
			System.out.println(page.getData().get(i));
		}
		} else {
			System.out.println("空");
		}
	// 创建反馈报文信息
	Map<String, Object> resultMap = new HashMap<>();
	resultMap.put(ResultUtils.ERROR_CODE, "200");
	resultMap.put(ResultUtils.ERROR_MESSAGE, "获取成功");
	resultMap.put(ResultUtils.DATA, page);
	return resultMap;
    }

public static Page getByPage(Map<String, String> conditions, int pageNumber) {
	Page page = new Page();
	String queryConditions = linkConditions(conditions);
	page.setConditions(conditions);
	SolrQuery query = new SolrQuery();

	if (StringUtils.isNotEmpty(queryConditions)) {
	query.setQuery(queryConditions);
	} else {
		query.setQuery("*:*");
	}

	// 查询页面不为空
	if (pageNumber >= 1) {
	page.setCurrent(pageNumber);
	}
	//开始页
	query.setStart((int)page.getStart());
	//一页显示多少条
	query.setRows(page.getSize());


	List<ResumeBasic> list = new ArrayList<ResumeBasic>();
	try {
	    QueryResponse rsp = solrServer.query(query);
	    SolrDocumentList docs = rsp.getResults();

	    Iterator<SolrDocument> iter = docs.iterator();
	    while (iter.hasNext()) {
		ResumeBasic resumeBasic = new ResumeBasic();
		SolrDocument doc = iter.next();
		String name = doc.getFieldValue("name").toString();
		String gender = doc.getFieldValue("gender").toString();
		String age = doc.getFieldValue("age").toString();
		String workSeniority = doc.getFieldValue("work_seniority").toString();
		String email = doc.getFieldValue("email").toString();
		String eduBackground = doc.getFieldValue("edu_background").toString();
		String cellphone = doc.getFieldValue("cellphone").toString();
		String fileName = doc.getFieldValue("file_name").toString();
		resumeBasic.setName(name);
		resumeBasic.setGender(gender);
		resumeBasic.setAge(age);
		resumeBasic.setWorkSeniority(workSeniority);
		resumeBasic.setEmail(email);
		resumeBasic.setEduBackground(eduBackground);
		resumeBasic.setCellphone(cellphone);
		resumeBasic.setFilePath(fileName);
		list.add(resumeBasic);
	    }

	    page.setDatas(list);
	    page.setCount(docs.getNumFound());
	    System.out.println(docs.getNumFound());

	} catch (Exception e) {
		
	}
	
	return page;

    }


搜索SolrWeb后端 Share Tweet +1