由于测试数据比较少,昨天用Java爬了简书的几百篇文章,唉,又特么两点多睡的。如果你需要这些测试文件GitHub

如果你看过我前面的文章,直接打开db-data-config.xml文件,添加一个entity

        <entity name="jianshu" pk="a_id"
query="select * from jianshu"
deltaImportQuery="SELECT * FROM jianshu where a_id='${dataimporter.delta.a_id}'">
<field column="A_ID" name="aId" />
<field column="A_TITLE" name="aTitle" />
<field column="A_CONTENT" name="aContent" />
<field column="A_TIME" name="aTime" />
</entity>

效果:

启动solr集群,然后添加一个名字为jianshu的Collection

D:\solr-7.1.>.\bin\solr start -c -p  -s example/cloud/node1/solr
Waiting up to to see Solr running on port
Started Solr server on port . Happy searching! D:\solr-7.1.>.\bin\solr start -c -p -s example/cloud/node2/solr -z localho
st:
Waiting up to to see Solr running on port
Started Solr server on port . Happy searching! D:\solr-7.1.>.\bin\solr create -c jianshu -s -rf
WARNING: Using _default configset. Data driven schema functionality is enabled b
y default, which is
NOT RECOMMENDED for production use.
To turn it off:
curl http://localhost:8983/solr/jianshu/config -d '{"set-user-proper
ty": {"update.autoCreateFields":"false"}}'
Created collection 'jianshu' with shard(s), replica(s) with config-set 'jian
shu'

打开控制台:多了一个jianshu的集合

选择jianshu

点击Schema,添加字段

完毕之后,点击DataImport

点击Query,看看数据是否到位

进行高亮查询--控制台操作

q:查询带有(爱情)的标题和内容

开启高亮,涉及的字段为标题和内容

看高亮结果

高亮查询--Java

实际中大多是用solrJ的API来完成。

    // 单机--core,集群--Collection
// 指向特定核心或集合的路径(例如,http://hostname:8983/solr/core1)的URL 。当在基本URL中指定核心或集合时,使用该客户端的后续请求不需要重新指定受影响的集合。但是,客户端仅限于向该核心/集合发送请求,而不能将请求发送给其他任何人。
// 指向根Solr路径的URL(例如,http://hostname:8983/solr)。如果在基本URL中未指定核心或集合,则可以向任何核心/集合发出请求,但是必须在所有请求上指定受影响的核心/集合。 public static SolrClient getClient(){
final String solrUrl = "http://localhost:8983/solr";
// final String solrUrl = "http://localhost:8983/solr/bless";
return new HttpSolrClient.Builder(solrUrl)
.withConnectionTimeout(10000)
.withSocketTimeout(60000)
.build();
}

上面是用来获取客户端的,下面是高亮查询

    /*    高亮样式
.search-key{
color: #d60e3c;
font-size: 18px;
font-weight: 600;
}
*/
public static void queryOfHighlight() throws SolrServerException, IOException{
final SolrClient client = getClient(); final SolrQuery query = new SolrQuery("a_title:爱情 a_content:爱情");
query.addField("a_id");
query.addField("a_title");
query.addField("a_content");
query.addField("a_time");
query.setHighlight(true)
.setHighlightSimplePre("<span class='search-key'>")
.setHighlightSimplePost("</span>");
query.setParam("hl.fl", "a_title,a_content"); final QueryResponse response = client.query("jianshu", query);
Map<String, Map<String, List<String>>> highlighting = response.getHighlighting(); // 高亮查询的结果集
Set<String> set = highlighting.keySet();
for (String key : set) {
System.out.println("++" + key); // id
Map<String, List<String>> map = highlighting.get(key); // id对应的查询结果,可能有多个字段,所以是map结构
Set<String> set2 = map.keySet(); // 字段名集合
// 遍历字段
for (String key2 : set2) {
System.out.println("--" + key2); // 字段名
List<String> list = map.get(key2); // 字段对应的值,因为分词了,所以是一个String列表
for (String s : list) {
System.out.print(s + " "); // 输出高亮的文本
}
System.out.println();
}
} // 这段代码获取的是不加处理的结构
// SolrDocumentList results = response.getResults();
// System.out.println("查询到的:" + results.getNumFound());
// for (SolrDocument sd : results) {
// Collection<String> names = sd.getFieldNames();
// for (String s : names) {
// Object value = sd.getFieldValue(s);
// System.out.println("名字?:" + s + ",值:" + value);
// }
// } }

运行结果:

如果放在前台大概是这样的:

细心会发现,通过高亮获得的文本只是一部分,想一下也是情理之中。当我们使用搜索功能的时候,每条信息显示的只是摘要。

最新文章

  1. django 在字符串[str(list)]中精确查找
  2. android 透明度颜色值
  3. 【Python】logging模块学习笔记
  4. 深入浅出Java并发包—锁机制(一)
  5. NET基础课--XML基础
  6. 用SQL脚本移除视图中存在的机器名
  7. spring之setter注入
  8. Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class android.sup
  9. sql中count(*)、count(col)、count(1)区别
  10. JDBC 心得
  11. [hdu6183][Color it]
  12. 通俗理解word2vec
  13. iframe初始化属性
  14. 判断是否在同一个线程-GetCurrentThreadId()用法
  15. 第1章 Python数据模型
  16. underscore.js源码研究(3)
  17. 《征服C指针》读书笔记
  18. 【HTTP】Fiddler 抓包工具
  19. Ribbon对于SocketTimeOutException重试的坑以及重试代码解析
  20. bingoyes&#39; tiny dream

热门文章

  1. 个人用的感觉比较舒服的 idea 插件,不定时更新
  2. html5 服務器發送事件
  3. Nginx 针对建立TCP连接优化
  4. Jquery中val方法使用的坑
  5. 前端部分-CSS基础介绍
  6. Java 属性映射(DozerBeanMapper)
  7. Semi-prime H-numbers POJ - 3292 打表(算复杂度)
  8. CH0802 占卜DIY
  9. POJ 3074 Sudoku(算竞进阶习题)
  10. 「洛谷P1516」 青蛙的约会