Contents
  1. 1. 参考文档
  2. 2. Solr特点
  3. 3. solr集成tomcat的安装方法
  4. 4. web管理界面
    1. 4.1. cloud功能
    2. 4.2. query界面
    3. 4.3. analysis功能
  5. 5. url命令
  6. 6. webSolr API
  7. 7. solr服务器核心配置
    1. 7.1. webapp下的solr的web.xml
    2. 7.2. solr.xml 端口、超时、zk、jetty等设置
    3. 7.3. Core应用配置
  8. 8. solr的查询日志
    1. 8.1. 生成持久日志的方法:

参考文档

Solr特点

  • 先进的全文搜索功能(不同于数据库的like查询,会根据分词结果的匹配程度按照评分规则顺序展示)
  • 支持像英语,德语,中国,日本,法国和许多主要语言(中文分词:Ansj分词插件、IK等)
  • 高度可扩展和容错(主要是solr-cloud而言)
  • API支持关键词高亮、颜色显示等渲染形式
  • XML,JSON和HTTP等结果返回形式
  • 丰富的文档分析

solr集成tomcat的安装方法

web管理界面

cloud功能

当solr继承了zookeeper之后,当有2个节点的时候,就会显示出cloud的操作界面,通过Graph功能,就能看到各个相关节点的运行状态和关联情况

query界面

q: 查询内容(九江市 或者为 * 查询该字段的全部内容)
df:为字段名称(cityname)

analysis功能

https://blog.csdn.net/john1337/article/details/79408172
通过在fieldvalue 里面输入文字,再选择字段后进行分析,可以看出字段中文字的分词情况

url命令

  • solr官方url命令API
    https://lucene.apache.org/solr/guide/6_6/collections-api.html

  • 删除废弃的节点:
    可以先通过命令查看下该节点属于core_node几,只要网络能通的话,就能删。

    http://218.30.99.44:8880/solr/admin/collections?action=DELETEREPLICA&collection=course&shard=shard1&replica=core_node7

webSolr API

https://www.cnblogs.com/xiao-zhang-blogs/p/7339476.html

public void deleteDocumentById() throws Exception {
//选择具体的某一个solr core
HttpSolrClient server = new HttpSolrClient(SOLR_URL+"helloworld");
//删除文档
//server.deleteById("3");
//删除所有的索引
server.deleteByQuery("*:*");
//提交修改
server.commit();
server.close();
}
public void addDoc() throws SolrServerException, IOException{
//获得一个solr服务端的请求,去提交 ,选择具体的某一个solr core
//solr的服务器地址
//private final static String SOLR_URL = "http://localhost:8080/solr/";
HttpSolrClient solr = new HttpSolrClient(SOLR_URL + "helloworld");
try {
//构造一篇文档
SolrInputDocument document = new SolrInputDocument();
//往doc中添加字段,在客户端这边添加的字段必须在服务端中有过定义
document.addField("id", "1");
document.addField("name", "你好");
document.addField("description", "前进的中国你好");
solr.add(document);
solr.commit();
} finally{
solr.close();
}
}

solr服务器核心配置

webapp下的solr的web.xml

  • 指定solr_home和屏蔽访问权限,默认的路径就是tomcat下面
  • 可以把solr/home 设置在 tomcat的 solr-home文件夹下面
    <env-entry>
    <env-entry-name>solr/home</env-entry-name>
    <env-entry-value>../solr-home</env-entry-value>
    <env-entry-type>java.lang.String</env-entry-type>
    </env-entry>
    <!--
    <security-constraint>
    <web-resource-collection>
    <web-resource-name>Disable TRACE</web-resource-name>
    <url-pattern>/</url-pattern>
    <http-method>TRACE</http-method>
    </web-resource-collection>
    <auth-constraint/>
    </security-constraint>
    <security-constraint>
    <web-resource-collection>
    <web-resource-name>Enable everything but TRACE</web-resource-name>
    <url-pattern>/</url-pattern>
    <http-method-omission>TRACE</http-method-omission>
    </web-resource-collection>
    </security-constraint>
    -->

solr.xml 端口、超时、zk、jetty等设置

路径在 solr/home下面

<str name="host">${host:}</str>
<int name="hostPort">${jetty.port:8983}</int>
<str name="hostContext">${hostContext:solr}</str>

Core应用配置

在collection/conf路径下面

  • dataconfig.xml
    <dataConfig>
    <dataSource driver="com.mysql.jdbc.Driver" url="jdbc:mysql://10.110.12.91:3306/eedu?useUnicode=true&amp;characterEncoding=utf-8" readOnly="true" batchSize="3000" user="dh" password="dh"/>
    <document name="course">
    <entity name="course" query="select * from course where deleted != 1">
    <field column="id" name="id" />
    <field column="name" name="name" />
    <field column="description" name="description" />
    <field column="image" name="image" />
    <field column="length" name="length" />
    <field column="score" name="score" />
    <field column="type" name="type" />
    <field column="is_vertical" name="is_vertical" />
    <entity name="class" query="select classes_id,subclasses_id FROM course_subclass WHERE course_subclass.course_id=${course.id}">
    <field column="classes_id" name="classId" />
    <field column="subclasses_id" name="subclassId" />
    </entity>
    <entity name="eapp" query="select * from eapp_course where course_id=${course.id}">
    <field column="eapp_id" name="app" />
    </entity>
    <entity name="tags" query="select tag.name FROM course_tags, tag WHERE course_tags.tag_id=tag.id and course_tags.course_id=${course.id}">
    <field column="name" name="tags" />
    </entity>
    </entity>
    </document>
    </dataConfig>

solr的查询日志

https://blog.csdn.net/woshiwanxin102213/article/details/18793271

  1. 将solr-4.5.1\example\lib\ext下面的jar包放到solr-4.5.1.war里边的WEB-INF\lib下面,因为从solr4开始,日志的jar被分离出来放到solr-4.5.1\example\lib\ext里边了
  2. 在solr-4.5.1.war的WEB-INF下建classes目录,在该目录创建文件log4j.properties,log4j.properties的样例如下(日志级别、日志路径可自定义):
# 例如我们系统的配置
# 路径在 bin目录下的logs/solr.log
solr.log=logs/
# Logging level
log4j.rootLogger=WARN, file, CONSOLE
log4j.appender.CONSOLE=org.apache.log4j.ConsoleAppender
log4j.appender.CONSOLE.layout=org.apache.log4j.PatternLayout
log4j.appender.CONSOLE.layout.ConversionPattern=%-4r [%t] %-5p %c %x \u2013 %m%n
#- size rotation with log cleanup.
log4j.appender.file=org.apache.log4j.RollingFileAppender
log4j.appender.file.MaxFileSize=4MB
log4j.appender.file.MaxBackupIndex=9
#- File to log to and log format
log4j.appender.file.File=${solr.log}/solr.log
log4j.appender.file.layout=org.apache.log4j.PatternLayout
log4j.appender.file.layout.ConversionPattern=%-5p - %d{yyyy-MM-dd HH:mm:ss.SSS}; %C; %m\n
log4j.logger.org.apache.zookeeper=WARN
log4j.logger.org.apache.hadoop=WARN
# set to INFO to enable infostream log messages
log4j.logger.org.apache.solr.update.LoggingInfoStream=OFF
Contents
  1. 1. 参考文档
  2. 2. Solr特点
  3. 3. solr集成tomcat的安装方法
  4. 4. web管理界面
    1. 4.1. cloud功能
    2. 4.2. query界面
    3. 4.3. analysis功能
  5. 5. url命令
  6. 6. webSolr API
  7. 7. solr服务器核心配置
    1. 7.1. webapp下的solr的web.xml
    2. 7.2. solr.xml 端口、超时、zk、jetty等设置
    3. 7.3. Core应用配置
  8. 8. solr的查询日志
    1. 8.1. 生成持久日志的方法: