Tutorialspoint Solr 教程
来源:易百教程
Solr教程™
Solr是一个开源搜索平台,用于构建搜索应用程序。 它建立在Lucene(全文搜索引擎)之上。 Solr是企业级的,快速的和高度可扩展的。 使用Solr构建的应用程序非常复杂,可提供高性能。
为了在CNET网络的公司网站上添加搜索功能,Yonik Seely于2004年创建了Solr。并在2006年1月,它成为Apache软件基金会下的一个开源项目。并于2016年发布最新版本Solr 6.0,支持并行SQL查询的执行。
Solr可以和Hadoop一起使用。由于Hadoop处理大量数据,Solr帮助我们从这么大的源中找到所需的信息。不仅限于搜索,Solr也可以用于存储目的。像其他NoSQL数据库一样,它是一种非关系数据存储和处理技术。
总之,Solr是一个可扩展的,可部署,搜索/存储引擎,优化搜索大量以文本为中心的数据。
Apache Solr特点
Solr是Lucene的Java API的包装。因此,使用Solr,可以利用Lucene的所有功能。 让我们来看看Solr的一些最突出的特点 -
- Restful APIs − 要与Solr通信,并非一定需要有Java编程技能。相反,您可以使用restful服务与它通信。可使用文件格式(如XML,JSON和.CSV)在Solr中作为输入文档,并以相同的文件格式获取结果。
- 全文搜索 - Solr提供了全文搜索所需的所有功能,例如令牌,短语,拼写检查,通配符和自动完成。
- 企业准备 - 根据企业/组织的需要,Solr可以部署在任何类型的系统(大或小),如独立,分布式,云等。
- 灵活和可扩展 - 通过扩展Java类并相应配置,可以轻松地定制Solr的组件。
- NoSQL数据库 - Solr也可以用作大数据量级的NOSQL数据库,可以沿着集群分布搜索任务。
- 管理界面 - Solr提供了一个易于使用,用户友好,功能强大的用户界面,使用它可以执行所有可能的任务,如管理日志,添加,删除,更新和搜索文档。
- 高度可扩展 - 在使用Solr与Hadoop时,我们可以通过添加副本来扩展其容量。
- 以文本为中心并按相关性排序 - Solr主要用于搜索文本文档,结果根据与用户查询的相关性按顺序传送。
与Lucene不同,在使用Apache Solr时,可不需要具有Java编程技能。它提供了一个完整的准备部署服务,以构建一个自动完成的搜索框,Lucene是不提供的。 使用Solr可以扩展,分配和管理大规模(大数据)应用程序的索引。
Lucene在搜索应用程序
Lucene是简单但强大的基于Java的搜索库。 它可以在任何应用程序中用于添加搜索功能。 Lucene是一个可扩展的高性能库,用于索引和搜索几乎任何类型的文本。 Lucene库提供任何搜索应用程序所需的核心操作,例如索引和搜索。
如果有一个具有大量数据的门户网站或平台,那么我们将很可能需要在门户/平台中提取一个搜索引擎从巨大的数据库中提取相关信息。Lucene作为任何搜索应用程序的核心,提供与索引和搜索相关的重要操作。
本站代码下载:http://www.yiibai.com/siteinfo/download.html
Solr搜索引擎基础 - Solr教程™
搜索引擎是指一个庞大的互联网资源数据库,如网页,新闻组,程序,图像等。它有助于在万维网上定位信息。
用户可以通过以关键字或短语的形式将查询传递到搜索引擎中来搜索信息。 搜索引擎然后搜索其数据库并向用户返回相关链接。
比如下面常用到两个搜索引擎 -
- 百度
- 谷歌
搜索引擎组件
一般来说,搜索引擎有三个基本组件,如下所列 -
- Web爬虫 - Web爬虫也称为蜘蛛或机器人。 它是一个收集网络信息的软件组件。
- 数据库 - Web上的所有信息都存储在数据库中。它们包含大量的Web资源。
- 搜索接口 - 此组件是用户和数据库之间的接口。它帮助用户搜索数据库。
搜索引擎是如何工作的?
任何搜索应用程序都需要执行以下一些或全部操作。
步骤 | 标题或名称 | 描述 |
1 | 获取原始内容 | 任何搜索应用程序的第一步是收集要进行搜索的目标内容。 |
2 | 构建文档 | 从原始内容构建文档,让搜索应用程序可以很容易地理解和解释。 |
3 | 分析文档 | 在索引开始之前,将对文档进行分析。 |
4 | 索引文档 | 当文档被构建和分析后,下一步是对它们建立索引,以便可以基于特定键而不是文档的全部内容来检索该文档。索引类似于在书开始页或末尾处的目录索引,其中常见单词以其页码显示,使得这些单词可以快速跟踪,而不是搜索整本书。 |
5 | 用于搜索的用户接口 | 当索引数据库就绪,应用程序可以执行搜索操作。 为了帮助用户进行搜索,应用必须提供用户接口,用户可以在其中输入文本并启动搜索过程 |
6 | 构建查询 | 当用户做出搜索文本的请求,应用程序应该使用该文本来准备查询对象,然后可以使用该查询对象来查询索引数据库以获得相关的细节。 |
7 | 搜索查询 | 使用查询对象,检查索引数据库以获取相关详细信息和内容文档。 |
8 | 渲染结果 | 当收到所需的结果,应用程序应决定如何使用其用户界面向用户显示结果。 |
看看下面的插图。 它显示了搜索引擎功能的总体视图。
除了这些基本操作之外,搜索应用还可以提供管理 - 用户界面以帮助管理员基于用户简档控制搜索的级别。搜索结果分析是任何搜索应用程序的另一个重要和高级方面。
本站代码下载:http://www.yiibai.com/siteinfo/download.html
本文属作者原创,转载请注明出处:易百教程 » Solr搜索引擎基础
Solr Windows环境安装配置 - Solr教程™
在本章中,我们将讨论如何在Windows环境中设置Solr。要在Windows系统上安装Solr,需要按照以下步骤 -
- 访问Apache Solr的主页,然后点击下载按钮或直接访问:http://lucene.apache.org/solr/downloads.html 。
- 选择一个镜像以获取Apache Solr。从那里选择下载名称为Solr-6.4.0.zip的文件。
- 将文件从下载文件夹移动到所需的目录并解压缩,在这个示例中,我们解压到D:\software\solr-6.4.0目录下。
假设您也将下载了Solr文件将其解压到D:\software\solr-6.4.0目录下。在这种情况下,可以按照以下方式启动Solr,如下面的屏幕截图所示。
要验证安装,请在浏览器中使用以下URL。
如果安装过程成功,那么将看到Apache Solr用户界面的仪表板,如下所示 -
设置Java环境
我们还可以使用Java库与Apache Solr进行通信; 但在使用Java API访问Solr之前,需要为这些库设置类路径。
注:以下为 Linux 系统的设置方法,如在Window上设置,可直接将类路径加入到环境变量中。
设置类路径
在.bashrc文件中将类路径设置为Solr库。在任何编辑器中打开.bashrc,如下所示。
$ gedit ~/.bashrc
设置Solr库的类路径(HBase中的lib文件夹),如下所示。
export CLASSPATH = $CLASSPATH://home/hadoop/Solr/lib/*
这是为了防止在使用Java API访问HBase时发生“未找到类(class not found)”异常。
本站代码下载:http://www.yiibai.com/siteinfo/download.html
本文属作者原创,转载请注明出处:易百教程 » Solr Windows环境安装配置
Hadoop配置使用Solr - Solr教程™
Solr可以和Hadoop一起使用。 由于Hadoop是用于处理大量数据,Solr帮助我们从这么大数据源中找到所需的信息。在本节中,我们将了解如何在系统上安装Hadoop。
下载Hadoop
下面给出了如何将Hadoop下载到系统中的步骤。
第1步 - 打开Hadoop主页 - www.hadoop.apache.org/。 单击链接版本,如下面的屏幕截图中突出显示。
它将重定向到Apache Hadoop发布页面,其中包含有关各种版本的Hadoop源代码和二进制文件镜像的链接,如下所示:
步骤2 - 选择最新稳定Hadoop版本(在本教程中,选择的是2.6.4),并单击其二进制链接。 它将转到一个页面,其中提供了Hadoop二进制文件的镜像。单击其中一个镜像下载Hadoop。
从命令提示符下载Hadoop
打开Linux终端并以超级用户(root)身份登录。
$ su
password:
转到需要安装Hadoop的目录,并使用之前复制的链接将文件保存在此目录下,如下面的代码块所示。
# cd /usr/local
# wget http://redrockdigimark.com/apachemirror/hadoop/common/hadoop-
2.6.4/hadoop-2.6.4.tar.gz
下载Hadoop后,使用以下命令解压缩。
# tar zxvf hadoop-2.6.4.tar.gz
# mkdir hadoop
# mv hadoop-2.6.4/* to hadoop/
# exit
安装Hadoop
按照下面给出的步骤在伪分布式模式下安装Hadoop。
第1步:设置Hadoop
可以通过将以下命令附加到〜/ .bashrc文件来设置Hadoop环境变量。
export HADOOP_HOME = /usr/local/hadoop export
HADOOP_MAPRED_HOME = $HADOOP_HOME export
HADOOP_COMMON_HOME = $HADOOP_HOME export
HADOOP_HDFS_HOME = $HADOOP_HOME export
YARN_HOME = $HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR = $HADOOP_HOME/lib/native
export PATH = $PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
export HADOOP_INSTALL = $HADOOP_HOME
接下来,将所有更改应用到当前运行的系统,执行以下代码 -
$ source ~/.bashrc
第2步:Hadoop配置
可以在位置“$HADOOP_HOME/etc/hadoop”目录中找到所有Hadoop配置文件。需要根据您的Hadoop基础结构对这些配置文件进行更改。
$ cd $HADOOP_HOME/etc/hadoop
为了在Java中开发Hadoop程序,必须通过将JAVA_HOME值替换为系统中Java的位置来重置hadoop-env.sh文件中的Java环境变量。
export JAVA_HOME = /usr/local/jdk1.7.0_71
以下是必须编辑以配置Hadoop的文件的列表 -
- core-site.xml
- hdfs-site.xml
- yarn-site.xml
- mapred-site.xml
core-site.xml
core-site.xml文件包含诸如用于Hadoop实例的端口号,为文件系统分配的内存,用于存储数据的内存限制以及读/写缓冲区大小的信息。
打开core-site.xml并在<configuration>,</ configuration>标签中添加以下属性。
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
hdfs-site.xml
hdfs-site.xml文件包含本地文件系统的复制数据值,namenode路径和datanode路径等信息。表示要存储Hadoop基础架构的位置。
假设有以下数据。
dfs.replication (data replication value) = 1
(In the below given path /hadoop/ is the user name.
hadoopinfra/hdfs/namenode is the directory created by hdfs file system.)
namenode path = //home/hadoop/hadoopinfra/hdfs/namenode
(hadoopinfra/hdfs/datanode is the directory created by hdfs file system.)
datanode path = //home/hadoop/hadoopinfra/hdfs/datanode
打开此文件,并在<configuration>,</ configuration>标记中添加以下属性。
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>file:///home/hadoop/hadoopinfra/hdfs/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///home/hadoop/hadoopinfra/hdfs/datanode</value>
</property>
</configuration>
注意 - 在上述文件中,所有属性值都是用户定义的,您可以根据Hadoop基础结构进行更改。
yarn-site.xml
此文件用于在Hadoop中配置yarn 。 打开yarn-site.xml文件,并在此文件中的<configuration>,</ configuration>标记之间添加以下属性。
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
mapred-site.xml
此文件用于指定使用的MapReduce框架。默认情况下,Hadoop包含yarn-site.xml模板。 首先,需要使用以下命令将文件从mapred-site,xml.template复制到mapred-site.xml文件。
$ cp mapred-site.xml.template mapred-site.xml
打开mapred-site.xml文件,并在<configuration>,</ configuration>标签中添加以下属性。
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
验证Hadoop安装
以下步骤用于验证Hadoop安装。
第1步:命名节点设置
使用命令“hdfs namenode -format”设置namenode,如下所示。
$ cd ~
$ hdfs namenode -format
预期输出结果如下 -
10/24/14 21:30:55 INFO namenode.NameNode: STARTUP_MSG:
/************************************************************
STARTUP_MSG: Starting NameNode
STARTUP_MSG: host = localhost/192.168.1.11
STARTUP_MSG: args = [-format] STARTUP_MSG: version = 2.6.4
...
...
10/24/14 21:30:56 INFO common.Storage: Storage directory
/home/hadoop/hadoopinfra/hdfs/namenode has been successfully formatted.
10/24/14 21:30:56 INFO namenode.NNStorageRetentionManager: Going to retain 1
images with txid >= 0
10/24/14 21:30:56 INFO util.ExitUtil: Exiting with status 0
10/24/14 21:30:56 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG: Shutting down NameNode at localhost/192.168.1.11
************************************************************/
第2步:验证Hadoop dfs
以下命令用于启动Hadoop dfs。执行此命令将启动Hadoop文件系统。
$ start-dfs.sh
输出结果如下 -
10/24/14 21:37:56
Starting namenodes on [localhost]
localhost: starting namenode, logging to /home/hadoop/hadoop-2.6.4/logs/hadoop-
hadoop-namenode-localhost.out
localhost: starting datanode, logging to /home/hadoop/hadoop-2.6.4/logs/hadoop-
hadoop-datanode-localhost.out
Starting secondary namenodes [0.0.0.0]
第3步:验证Yarn脚本
以下命令用于启动Yarn脚本。执行此命令将启动 Yarn 实例。
$ start-yarn.sh
输出结果如下 -
starting yarn daemons
starting resourcemanager, logging to /home/hadoop/hadoop-2.6.4/logs/yarn-
hadoop-resourcemanager-localhost.out
localhost: starting nodemanager, logging to /home/hadoop/hadoop-
2.6.4/logs/yarn-hadoop-nodemanager-localhost.out
第4步:在浏览器上访问Hadoop
访问Hadoop的默认端口号为50070。使用以下URL在浏览器上获取Hadoop服务。
得到结果如下 -
在Hadoop上安装Solr
按照以下步骤下载并安装Solr。
第1步
通过单击以下链接打开Apache Solr的主页 - http://lucene.apache.org/solr/
第2步
点击下载按钮(在上面的截图中箭头突出显示)。点击后将被重定向到Apache Solr的各种镜像的页面。 选择一个镜像并单击它,这将重定向到一个页面,您可以下载Apache Solr的源文件和二进制文件,如下面的屏幕截图所示。
第3步
选择Solr-6.2.0.tqz的文件夹将它下载到系统的文件夹中。提取下载的文件夹的内容。
第4步
在Hadoop主目录中创建一个Solr的文件夹,并将解压缩文件夹的内容移动到其中,如下所示。
$ mkdir Solr
$ cd Downloads
$ mv Solr-6.2.0 /home/Hadoop/
验证
进入到solr主目录的bin文件夹,并使用version选项验证安装,如以下代码块所示。
$ cd bin/
$ ./Solr version
6.2.0
设置主目录和路径
使用以下命令打开.bashrc文件 -
[Hadoop@localhost ~]$ source ~/.bashrc
现在设置Apache Solr的home和path目录如下 -
export SOLR_HOME = /home/Hadoop/Solr
export PATH = $PATH:/$SOLR_HOME/bin/
打开终端并执行以下命令 -
[Hadoop@localhost Solr]$ source ~/.bashrc
现在,可以从任何目录执行Solr命令。
本站代码下载:http://www.yiibai.com/siteinfo/download.html
本文属作者原创,转载请注明出处:易百教程 » Hadoop配置使用Solr
Solr架构(体系结构) - Solr教程™
在本章中,我们将讨论Apache Solr的架构。 下图显示了Apache Solr的体系结构的框图。
Solr架构 - 构件块
以下是Apache Solr的主要构建块(组件)
- 请求处理程序 - 发送到Apache Solr的请求由这些请求处理程序处理。请求可以是查询请求或索引更新请求。根据这些请示的要求来选择请求处理程序。为了将请求传递给Solr,通常将处理器映射到某个URI端点,并且它将为指定的请求提供服务。
- 搜索组件 - 搜索组件是Apache Solr中提供的搜索类型(功能)。它可能是拼写检查,查询,构面,命中突出显示等。这些搜索组件被注册为搜索处理程序。多个组件可以注册到搜索处理程序。
- 查询解析器 − Apache Solr查询解析器解析传递给Solr的查询,并验证查询的语法是否有错误。解析查询后,将它们转换为Lucene理解的格式。
- 响应写入器 - Apache Solr中的响应写入器是为用户查询生成格式化输出的组件。 Solr支持XML,JSON,CSV等响应格式。对每种类型的响应都有不同的响应写入。
- 分析器/分词器 - Lucene以令牌的形式识别数据。 Apache Solr分析内容,将其分成令牌,并将这些令牌传递给Lucene。 Apache Solr中的分析器检查字段的文本并生成令牌流。分词器将分析器准备的令牌流分解成令牌。
- 更新请求处理器 - 每当向Apache Solr发送更新请求时,请求都通过一组称为更新请求处理器的插件(签名,日志记录,索引)运行。这个处理器负责修改,例如删除字段,添加字段等。
本站代码下载:http://www.yiibai.com/siteinfo/download.html
本文属作者原创,转载请注明出处:易百教程 » Solr架构(体系结构)
Solr术语 - Solr教程™
在本章中,我们将解释并理解在Solr中经常使用的一些术语的真正含义。
一般术语
以下是在所有类型的Solr设置中使用的一般术语的列表 -
实例 - 就像一个tomcat实例或一个jetty实例,这个术语指的是在JVM中运行的应用程序服务器。Solr主目录提供对每个这些Solr实例的引用,一个或多个核心可以配置在每个实例中运行。
- 核心(core) - 在应用程序中运行多个索引时,可以在每个实例中拥有多个核心,而不是每个核心的多个实例。
- 主目录(home) - 术语$SOLR_HOME是指主目录,其中包含有关内核及其索引,配置和依赖关系的所有信息。
- 碎片(Shard) - 在分布式环境中,数据在多个Solr实例之间进行分区,其中每个数据块可以称为碎片(Shard)。它包含整个索引的子集。
SolrCloud术语
在前面的章节中,我们讨论了如何在独立模式下安装Apache Solr。请注意,还可以在分布式模式(云环境)中安装Solr,Solr以主从模式安装。在分布式模式下,索引在主服务器上创建,并且将其复制到一个或多个从服务器。
与Solr Cloud相关的主要术语如下 -
- 节点(Node) - 在Solr云中,Solr的每个单个实例都被视为一个节点。
- 集群 - Solr云环境中的所有节点组合在一起构成集群。
- 集合 - 集群具有称为集合的逻辑索引。
- 碎片 - 碎片是集合的一部分,它具有一个或多个索引副本。
- 副本 - 在Solr Core中,在节点中运行的分片副本称为副本。
- 领导者(Leader) - 它也是碎片的副本,它将Solr Cloud的请求分发给剩余的副本。
- Zookeeper - 这是一个Apache项目,Solr Cloud用于集中配置和协调,管理集群和选择领导者。
配置文件
Apache Solr中的主要配置文件如下 -
- Solr.xml - 它是包含Solr Cloud相关信息,此文件是在$SOLR_HOME目录中。 为了加载核心,Solr引用这个文件,这有助于识别它们。
- Solrconfig.xml − 此文件包含与请求处理和响应格式化相关的定义,核心特定配置,以及索引,配置,管理内存和提交。
- Schema.xml − 此文件包含整个模式以及字段和字段类型。
- Core.properties - 此文件包含特定于核心的配置。它被引用为核心发现,因为它包含核心的名称和数据目录的路径。它可以在任何目录中使用,会将此目录它视为核心目录。
本站代码下载:http://www.yiibai.com/siteinfo/download.html
Solr基本命令 - Solr教程™
启动Solr
安装Solr后,进入到Solr主目录中的bin文件夹,并使用以下命令启动Solr。
[Hadoop@localhost ~]$ cd
[Hadoop@localhost ~]$ cd Solr/
[Hadoop@localhost Solr]$ cd bin/
[Hadoop@localhost bin]$ ./Solr start
在 Windows 系统中使用以下命令 -
此命令在后台启动Solr,通过显示以下消息监听端口8983。
Waiting up to 30 seconds to see Solr running on port 8983 [\]
Started Solr server on port 8983 (pid = 6035). Happy searching!
在前台启动Solr
如果使用start命令启动Solr,那么Solr将在后台启动。然而可以使用-f选项在前台启动Solr。
[Hadoop@localhost bin]$ ./Solr start –f
5823 INFO (coreLoadExecutor-6-thread-2) [ ] o.a.s.c.SolrResourceLoader
Adding 'file:/home/Hadoop/Solr/contrib/extraction/lib/xmlbeans-2.6.0.jar' to
classloader
5823 INFO (coreLoadExecutor-6-thread-2) [ ] o.a.s.c.SolrResourceLoader
Adding 'file:/home/Hadoop/Solr/dist/Solr-cell-6.2.0.jar' to classloader
5823 INFO (coreLoadExecutor-6-thread-2) [ ] o.a.s.c.SolrResourceLoader
Adding 'file:/home/Hadoop/Solr/contrib/clustering/lib/carrot2-guava-18.0.jar'
to classloader
5823 INFO (coreLoadExecutor-6-thread-2) [ ] o.a.s.c.SolrResourceLoader
Adding 'file:/home/Hadoop/Solr/contrib/clustering/lib/attributes-binder1.3.1.jar'
to classloader
5823 INFO (coreLoadExecutor-6-thread-2) [ ] o.a.s.c.SolrResourceLoader
Adding 'file:/home/Hadoop/Solr/contrib/clustering/lib/simple-xml-2.7.1.jar'
to classloader
……………………………………………………………………………………………………………………………………………………………………………………………………………
………………………………………………………………………………………………………………………………………………………………………………………………….
12901 INFO (coreLoadExecutor-6-thread-1) [ x:Solr_sample] o.a.s.u.UpdateLog
Took 24.0ms to seed version buckets with highest version 1546058939881226240 12902
INFO (coreLoadExecutor-6-thread-1) [ x:Solr_sample]
o.a.s.c.CoreContainer registering core: Solr_sample
12904 INFO (coreLoadExecutor-6-thread-2) [ x:my_core] o.a.s.u.UpdateLog Took
16.0ms to seed version buckets with highest version 1546058939894857728
12904 INFO (coreLoadExecutor-6-thread-2) [ x:my_core] o.a.s.c.CoreContainer
registering core: my_core
在另一个端口上启动Solr
使用start命令的-p选项指定一个启动端口,可以在另一个端口启动Solr,如下面的代码块所示。
[Hadoop@localhost bin]$ ./Solr start -p 8081
Waiting up to 30 seconds to see Solr running on port 8081 [-]
Started Solr server on port 8081 (pid = 10137). Happy searching!
停止Solr
可以使用stop命令停止Solr,如下示例 -
$ ./Solr stop
此命令停止Solr,显示消息如下所示。
Sending stop command to Solr running on port 8983 ... waiting 5 seconds to
allow Jetty process 6035 to stop gracefully.
重新启动Solr
Solr的 restart 命令会停止Solr 5秒钟,然后再次启动。可以使用以下命令重新启动Solr -
./Solr restart
此命令重新启动Solr,显示以下消息 -
Sending stop command to Solr running on port 8983 ... waiting 5 seconds to
allow Jetty process 6671 to stop gracefully.
Waiting up to 30 seconds to see Solr running on port 8983 [|] [/]
Started Solr server on port 8983 (pid = 6906). Happy searching!
Solr ─ help 命令
Solr的help命令可用于查看Solr提示及其选项的用法。
[Hadoop@localhost bin]$ ./Solr -help
Usage: Solr COMMAND OPTIONS
where COMMAND is one of: start, stop, restart, status, healthcheck,
create, create_core, create_collection, delete, version, zk
Standalone server example (start Solr running in the background on port 8984):
./Solr start -p 8984
SolrCloud example (start Solr running in SolrCloud mode using localhost:2181
to connect to Zookeeper, with 1g max heap size and remote Java debug options enabled):
./Solr start -c -m 1g -z localhost:2181 -a "-Xdebug -
Xrunjdwp:transport = dt_socket,server = y,suspend = n,address = 1044"
Pass -help after any COMMAND to see command-specific usage information,
such as: ./Solr start -help or ./Solr stop -help
Solr ─ status命令
Solr的 status 命令可用于在计算机上搜索和找出运行的Solr实例。它可以提供有关Solr实例的信息,例如它的版本,内存使用情况等。
可以使用status命令检查Solr实例的状态,如下所示:
[Hadoop@localhost bin]$ ./Solr status
执行时,显示上述Solr的status命令结果如下 -
Found 1 Solr nodes:
Solr process 6906 running on port 8983 {
"Solr_home":"/home/Hadoop/Solr/server/Solr",
"version":"6.2.0 764d0f19151dbff6f5fcd9fc4b2682cf934590c5 -
mike - 2016-08-20 05:41:37",
"startTime":"2016-09-20T06:00:02.877Z",
"uptime":"0 days, 0 hours, 5 minutes, 14 seconds",
"memory":"30.6 MB (%6.2) of 490.7 MB"
}
Solr Admin
启动Apache Solr后,就可以使用以下URL访问Solr Web界面的主页。
Solr管理员的界面如下 -
本站代码下载:http://www.yiibai.com/siteinfo/download.html
本文属作者原创,转载请注明出处:易百教程 » Solr基本命令
Solr核心(内核) - Solr教程™
Solr核心(Core)是Lucene索引的运行实例,包含使用它所需的所有Solr配置文件。我们需要创建一个Solr Core来执行索引和分析等操作。
Solr应用程序可以包含一个或多个核心。 如果需要,Solr应用程序中的两个核心可以相互通信。
创建一个核心
安装和启动Solr后,可以连接到Solr的客户端(Web界面)。访问以下网址:
如下面的截图(箭头指向)所示,最初Apache Solr中并没有核心。 现在我们来学习如何在Solr中创建一个核心。
使用create命令
创建核心的一种方法是使用create命令来创建无架构的核心,如下所示 -
[Hadoop@localhost bin]$ ./Solr create -c solr_sample
这里,我们试图在Apache Solr中创建一个solr_sample核心。此命令将创建一个核心,显示以下消息。
Copying configuration to new core instance directory:
/home/Hadoop/Solr/server/Solr/Solr_sample
Creating new core 'Solr_sample' using command:
http://localhost:8983/Solr/admin/cores?action=CREATE&name=Solr_sample&instanceD
ir = Solr_sample {
"responseHeader":{
"status":0,
"QTime":850
},
"core":"solr_sample"
}
可以在Solr中创建多个核心。在Solr Admin的左侧下方,有一个核心选择器(core selector),可以在其中选择新创建的核心,在弹出的表单中填入要创建的核心的相关信息,如以下屏幕截图所示。
使用create_core命令
或者,也可以使用create_core命令来创建核心。此命令具有以下选项 -
–c core_name | 要创建的核心的名称 |
-p port_name | 要创建的核心的端口 |
-d conf_dir | 端口的配置目录 |
下面来看看如何使用create_core命令。 在这里,我们将尝试创建一个名称为my_core的核心。
[Hadoop@localhost bin]$ ./Solr create_core -c my_core
在执行时,上述命令创建一个核心,它会显示以下消息 -
Copying configuration to new core instance directory:
/home/Hadoop/Solr/server/Solr/my_core
Creating new core 'my_core' using command:
http://localhost:8983/Solr/admin/cores?action=CREATE&name=my_core&instanceD
ir = my_core {
"responseHeader":{
"status":0,
"QTime":750
},
"core":"my_core"
}
删除核心
可以使用Apache Solr的delete命令删除核心。现在假设在Solr中有一个名称为my_core的核心,如下面的截图所示。
可以使用delete命令删除此核心,方法是将核心名称传递到此命令,如下所示 -
[Hadoop@localhost bin]$ ./solr delete -c my_core
在执行上述命令时,将删除指定的内核,显示以下消息。
Deleting core 'my_core' using command:
http://localhost:8983/Solr/admin/cores?action=UNLOAD&core = my_core&deleteIndex
= true&deleteDataDir = true&deleteInstanceDir = true {
"responseHeader" :{
"status":0,
"QTime":170
}
}
可以打开Solr的Web界面以验证核心是否已成功删除。
本站代码下载:http://www.yiibai.com/siteinfo/download.html
本文属作者原创,转载请注明出处:易百教程 » Solr核心(内核)
Solr索引数据 - Solr教程™
一般来说,索引是系统地排列文档或(其他实体)。索引使用户能够在文档中快速地查找信息。
- 索引集合,解析和存储文档。
- 索引是为了在查找所需文档时提高搜索查询的速度和性能。
在Apache Solr中的索引
在Apache Solr中,我们可以索引(添加,删除,修改)各种文档格式,如xml,csv,pdf等。可以通过几种方式向Solr索引添加数据。
在本章中,将讨论创建索引的几个方法 -
- 使用Solr Web界面。
- 使用任何客户端API(如Java,Python等)。
- 使用提交工具。
在本章中,将讨论如何使用各种接口(命令行,Web界面和Java客户端API)向Apache Solr的索引添加数据,
使用Post命令添加文档
Solr在其bin/目录中有一个post命令。使用这个命令,可以在Apache Solr中索引各种格式的文件,例如JSON,XML,CSV。
进入到Apache Solr的bin目录并执行post命令的-h选项,如以下代码块所示。
yiibai@ubuntu:/usr/local/solr-6.4.0/bin$ cd $SOLR_HOME
yiibai@ubuntu:/usr/local/solr-6.4.0/bin$ ./post -h
在执行上述命令时,将得到post命令的选项列表,如下所示。
Usage: post -c <collection> [OPTIONS] <files|directories|urls|-d [".."]>
or post –help
collection name defaults to DEFAULT_SOLR_COLLECTION if not specified
OPTIONS
=======
Solr options:
-url <base Solr update URL> (overrides collection, host, and port)
-host <host> (default: localhost)
-p or -port <port> (default: 8983)
-commit yes|no (default: yes)
Web crawl options:
-recursive <depth> (default: 1)
-delay <seconds> (default: 10)
Directory crawl options:
-delay <seconds> (default: 0)
stdin/args options:
-type <content/type> (default: application/xml)
Other options:
-filetypes <type>[,<type>,...] (default:
xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,
rtf,htm,html,txt,log)
-params "<key> = <value>[&<key> = <value>...]" (values must be
URL-encoded; these pass through to Solr update request)
-out yes|no (default: no; yes outputs Solr response to console)
-format Solr (sends application/json content as Solr commands
to /update instead of /update/json/docs)
Examples:
* JSON file:./post -c wizbang events.json
* XML files: ./post -c records article*.xml
* CSV file: ./post -c signals LATEST-signals.csv
* Directory of files: ./post -c myfiles ~/Documents
* Web crawl: ./post -c gettingstarted http://lucene.apache.org/Solr -recursive 1 -delay 1
* Standard input (stdin): echo '{commit: {}}' | ./post -c my_collection -
type application/json -out yes –d
* Data as string: ./post -c signals -type text/csv -out yes -d $'id,value\n1,0.47'
示例`
假设有一个名称为sample.csv的文件,其内容如下(这个文件也在`bin目录中)。
上述数据集包含个人详细信息,如学生ID,名字,姓氏,电话和城市。数据集的CSV文件如下所示。 在这里必须注意:数据记录的第一行。
id, first_name, last_name, phone_no, location
001, Pruthvi, Reddy, 9848022337, Hyderabad
002, kasyap, Sastry, 9848022338, Vishakapatnam
003, Rajesh, Khanna, 9848022339, Delhi
004, Preethi, Agarwal, 9848022330, Pune
005, Trupthi, Mohanty, 9848022336, Bhubaneshwar
006, Archana, Mishra, 9848022335, Chennai
可以使用post命令在名称为Solr_sample的核心下,对此数据编制索引,如下所示:
yiibai@ubuntu:/usr/local/solr-6.4.0/bin$ ./post -c solr_sample sample.csv
在执行上述命令时,给定文档在指定的核心下会生成索引,生成以下输出。
yiibai@ubuntu:/usr/local/solr-6.4.0/bin$ ./post -c solr_sample sample.csv
/usr/local/jdk1.8.0_65/bin/java -classpath /usr/local/solr-6.4.0/dist/solr-core-6.4.0.jar -Dauto=yes -Dc=solr_sample -Ddata=files org.apache.solr.util.SimplePostTool sample.csv
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/solr/solr_sample/update...
Entering auto mode. File endings considered are xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log
POSTing file sample.csv (text/csv) to [base]
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/solr/solr_sample/update...
Time spent: 0:00:00.663
访问Solr Web UI的主页使用以下URL -
选择核心Solr_sample。 默认情况下,请求处理程序是/select,查询为“:”。 不做任何修改,单击页面底部的ExecuteQuery按钮。
在执行查询时,可以以JSON格式(默认)观察索引的CSV文档的内容,如下面的屏幕截图所示。
注意 - 以相同的方式,可以索引其他文件格式,如JSON,XML,CSV等。
使用Solr Web界面添加文档
还可以使用Solr提供的Web界面对文档编制索引。看看下面如何索引JSON格式的文档。
[
{
"id" : "001",
"name" : "Ram",
"age" : 53,
"Designation" : "Manager",
"Location" : "Hyderabad",
},
{
"id" : "002",
"name" : "Robert",
"age" : 43,
"Designation" : "SR.Programmer",
"Location" : "Chennai",
},
{
"id" : "003",
"name" : "Rahim",
"age" : 25,
"Designation" : "JR.Programmer",
"Location" : "Delhi",
}
]
第1步
使用以下URL打开Solr Web界面 -
第2步
选择核心Solr_sample。 默认情况下,Request Handler,Common Within,Overwrite和Boost字段的值分别为/update,1000,true和1.0,如下面的屏幕截图所示。
现在,从JSON,CSV,XML等中选择所需的文档格式。在文本区域中键入要索引的文档,然后单击提交文档按钮,如下面的屏幕截图所示。
使用Java Client API添加文档
以下是Java程序向Apache Solr索引添加文档代码。将代码保存在AddingDocument.java文件中。
import java.io.IOException;
import org.apache.Solr.client.Solrj.SolrClient;
import org.apache.Solr.client.Solrj.SolrServerException;
import org.apache.Solr.client.Solrj.impl.HttpSolrClient;
import org.apache.Solr.common.SolrInputDocument;
public class AddingDocument {
public static void main(String args[]) throws Exception {
//Preparing the Solr client
String urlString = "http://localhost:8983/Solr/my_core";
SolrClient Solr = new HttpSolrClient.Builder(urlString).build();
//Preparing the Solr document
SolrInputDocument doc = new SolrInputDocument();
//Adding fields to the document
doc.addField("id", "003");
doc.addField("name", "Rajaman");
doc.addField("age","34");
doc.addField("addr","vishakapatnam");
//Adding the document to Solr
Solr.add(doc);
//Saving the changes
Solr.commit();
System.out.println("Documents added");
}
}
通过在终端中执行以下命令编译上述代码 -
yiibai@ubuntu:/usr/local/solr-6.4.0/bin$ javac AddingDocument.java
yiibai@ubuntu:/usr/local/solr-6.4.0/bin$ java AddingDocument
执行上述命令后,将得到以下输出。
Documents added
本站代码下载:http://www.yiibai.com/siteinfo/download.html
本文属作者原创,转载请注明出处:易百教程 » Solr索引数据
Solr添加文档(XML) - Solr教程™
在上一章中,我们学习解释了如何向Solr中添加JSON和.CSV文件格式的数据。在本章中,将演示如何使用XML文档格式在Apache Solr索引中添加数据。
示例数据
假设我们需要使用XML文件格式将以下数据添加到Solr索引。
Student ID | First Name | Last Name | Phone | City |
001 | Rajiv | Reddy | 9848022337 | Hyderabad |
002 | Siddharth | Bhattacharya | 9848022338 | Kolkata |
003 | Rajesh | Khanna | 9848022339 | Delhi |
004 | Preethi | Agarwal | 9848022330 | Pune |
005 | Trupthi | Mohanty | 9848022336 | Bhubaneshwar |
006 | Archana | Mishra | 9848022335 | Chennai |
使用XML添加文档
要将上述数据添加到Solr索引中,我们需要准备一个XML文档,如下所示。 将此文档保存在名称为sample.xml的文件中。
<add>
<doc>
<field name = "id">001</field>
<field name = "first name">Rajiv</field>
<field name = "last name">Reddy</field>
<field name = "phone">9848022337</field>
<field name = "city">Hyderabad</field>
</doc>
<doc>
<field name = "id">002</field>
<field name = "first name">Siddarth</field>
<field name = "last name">Battacharya</field>
<field name = "phone">9848022338</field>
<field name = "city">Kolkata</field>
</doc>
<doc>
<field name = "id">003</field>
<field name = "first name">Rajesh</field>
<field name = "last name">Khanna</field>
<field name = "phone">9848022339</field>
<field name = "city">Delhi</field>
</doc>
<doc>
<field name = "id">004</field>
<field name = "first name">Preethi</field>
<field name = "last name">Agarwal</field>
<field name = "phone">9848022330</field>
<field name = "city">Pune</field>
</doc>
<doc>
<field name = "id">005</field>
<field name = "first name">Trupthi</field>
<field name = "last name">Mohanthy</field>
<field name = "phone">9848022336</field>
<field name = "city">Bhuwaeshwar</field>
</doc>
<doc>
<field name = "id">006</field>
<field name = "first name">Archana</field>
<field name = "last name">Mishra</field>
<field name = "phone">9848022335</field>
<field name = "city">Chennai</field>
</doc>
</add>
正如所看到的,写入添加数据到索引的XML文件包含三个重要的标签,<add> </add>, <doc></doc>, 以及 < field >< /field >。
- add − 这是用于将文档添加到索引的根标记。它包含一个或多个要添加的文档。
- doc − 添加的文档应该包含在<doc> </ doc>标记中。文档包含字段形式的数据。
- field − 字段标记包含文档的字段的名称和值。
准备好文档后,可以使用上一章中讨论的任何方法将此文档添加到索引。
假设XML文件(sample.xml)存在于Solr的bin目录中,并且它将在名称为my_core的核心中进行索引,那么可以使用post工具将其添加到Solr索引中,如下所示 -
[yiibai@ubuntu:/usr/local/solr-6.4.0/bin]$ ./post -c my_core sample.xml
执行上述命令后,将得到以下输出 -
yiibai@ubuntu:/usr/local/solr-6.4.0/bin$ ./post -c my_core sample.xml
/usr/local/jdk1.8.0_65/bin/java -classpath /usr/local/solr-6.4.0/dist/solr-core-6.4.0.jar -Dauto=yes -Dc=my_core -Ddata=files org.apache.solr.util.SimplePostTool sample.xml
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/solr/my_core/update...
Entering auto mode. File endings considered are xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log
POSTing file sample.xml (application/xml) to [base]
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/solr/my_core/update...
Time spent: 0:00:00.756
验证上面的操作
访问Apache Solr Web界面的主页并选择核心my_core。尝试通过在文本区域q中传递查询“:”来检索所有文档,并执行查询。执行时应该可以观察到所需的数据被添加到Solr索引。
本站代码下载:http://www.yiibai.com/siteinfo/download.html
本文属作者原创,转载请注明出处:易百教程 » Solr添加文档(XML)
Solr更新文档数据 - Solr教程™
使用XML更新文档
以下是用于更新现有文档中的字段的XML文件。将下面的内容保存在名称为update.xml的文件中。
<add>
<doc>
<field name = "id">001</field>
<field name = "first name" update = "set">Raj</field>
<field name = "last name" update = "add">Malhotra</field>
<field name = "phone" update = "add">9000000000</field>
<field name = "city" update = "add">Delhi</field>
</doc>
</add>
正如上面看到的,写入更新数据的XML文件就类似之前用来添加文档的XML文件。 但唯一的区别是这里使用字段的一个update属性。
在这个示例中,我们将使用上述文档并尝试更新id为001文档的字段。
假设XML文档(update.xml)存在于Solr的bin目录中。更新的核心是名称为my_core的索引,可以使用post工具更新如下 -
[yiibai@ubuntu:/usr/local/solr-6.4.0/bin]$ ./post -c my_core update.xml
执行上述命令后,将得到以下输出 -
yiibai@ubuntu:/usr/local/solr-6.4.0/bin$ ./post -c my_core update.xml
/usr/local/jdk1.8.0_65/bin/java -classpath /usr/local/solr-6.4.0/dist/solr-core-6.4.0.jar -Dauto=yes -Dc=my_core -Ddata=files org.apache.solr.util.SimplePostTool update.xml
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/solr/my_core/update...
Entering auto mode. File endings considered are xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log
POSTing file update.xml (application/xml) to [base]
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/solr/my_core/update...
Time spent: 0:00:00.246
验证修改结果
访问Apache Solr Web界面的主页,选择核心 - my_core。 尝试通过在文本区域q中传递查询“:”来检索所有文档,并执行查询。 执行时可以观察到文档已经更新了。如下图所示 -
本站代码下载:http://www.yiibai.com/siteinfo/download.html
本文属作者原创,转载请注明出处:易百教程 » Solr更新文档数据
Solr删除文档数据 - Solr教程™
删除文档
要从Apache Solr的索引中删除文档,我们需要在<delete> </ delete>标记之间指定要删除的文档的ID。
<delete>
<id>003</id>
<id>005</id>
</delete>
这里,此XML代码用于删除ID为003和005的文档。将此代码保存在名称为delete.xml的文件中。
如果要从属于名称为my_core的核心的索引中删除文档,则可以使用post工具发布delete.xml文件,如下所示。
[yiibai@ubuntu:/usr/local/solr-6.4.0/bin]$ ./post -c my_core delete.xml
执行上述命令后,将得到以下输出 -
yiibai@ubuntu:/usr/local/solr-6.4.0/bin$ ./post -c my_core delete.xml
/usr/local/jdk1.8.0_65/bin/java -classpath /usr/local/solr-6.4.0/dist/solr-core-6.4.0.jar -Dauto=yes -Dc=my_core -Ddata=files org.apache.solr.util.SimplePostTool delete.xml
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/solr/my_core/update...
Entering auto mode. File endings considered are xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log
POSTing file delete.xml (application/xml) to [base]
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/solr/my_core/update...
Time spent: 0:00:00.124
验证执行结果
访问Apache Solr Web界面的主页,选择核心 - my_core。 尝试通过在文本区域q中传递查询“:”来检索所有文档,并执行查询。 执行时可以观察到指定的文档(ID为003和005)已删除。
删除字段
有时,需要基于除ID以外的字段来删除文档。例如,可能需要删除城市是Chennai的文档。
在这种情况下,需要在<query> </ query>标记对中指定字段的名称和值。
<delete>
<query>city:Chennai</query>
</delete>
将上面代码保存到delete_field.xml文件中,并使用Solr的post工具在核心my_core上执行删除操作。
[yiibai@ubuntu:/usr/local/solr-6.4.0/bin]$ ./post -c my_core delete_field.xml
执行上述命令后,将产生以下输出。
yiibai@ubuntu:/usr/local/solr-6.4.0/bin$ ./post -c my_core delete_field.xml
/usr/local/jdk1.8.0_65/bin/java -classpath /usr/local/solr-6.4.0/dist/solr-core-6.4.0.jar -Dauto=yes -Dc=my_core -Ddata=files org.apache.solr.util.SimplePostTool delete_field.xml
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/solr/my_core/update...
Entering auto mode. File endings considered are xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log
POSTing file delete_field.xml (application/xml) to [base]
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/solr/my_core/update...
Time spent: 0:00:00.225
验证执行结果
访问Apache Solr Web界面的主页,选择核心 - my_core。 尝试通过在文本区域q中传递查询“:”来检索所有文档,并执行查询。 执行时可以观察到包含指定字段值对的文档被删除。
删除所有文档
类似删除一个指定删除某个字段一样,如果想删除索引中的所有文档,只需要在标签<query> </ query>之间传递符号“:”,如下所示。
<delete>
<query>*:*</query>
</delete>
将上面代码保存到delete_all.xml文件中,并使用Solr的post工具对核心my_core执行删除操作。
[yiibai@ubuntu:/usr/local/solr-6.4.0/bin]$ ./post -c my_core delete_all.xml
执行上述命令后,将产生以下输出。
yiibai@ubuntu:/usr/local/solr-6.4.0/bin$ ./post -c my_core delete_all.xml
/usr/local/jdk1.8.0_65/bin/java -classpath /usr/local/solr-6.4.0/dist/solr-core-6.4.0.jar -Dauto=yes -Dc=my_core -Ddata=files org.apache.solr.util.SimplePostTool delete_all.xml
SimplePostTool version 5.0.0
Posting files to [base] url http://localhost:8983/solr/my_core/update...
Entering auto mode. File endings considered are xml,json,jsonl,csv,pdf,doc,docx,ppt,pptx,xls,xlsx,odt,odp,ods,ott,otp,ots,rtf,htm,html,txt,log
POSTing file delete_all.xml (application/xml) to [base]
1 files indexed.
COMMITting Solr index changes to http://localhost:8983/solr/my_core/update...
Time spent: 0:00:00.114
验证执行结果
访问Apache Solr Web界面的主页,选择核心 - my_core。 尝试通过在文本区域q中传递查询“:”来检索所有文档,并执行查询。执行时您可以观察到包含指定字段值对的文档全被删除了。
使用Java(客户端API)删除所有文档
以下是使用Java程序向Apache Solr索引删除文档。将此代码保存在名称为DeletingAllDocuments.java的文件中。
import java.io.IOException;
import org.apache.Solr.client.Solrj.SolrClient;
import org.apache.Solr.client.Solrj.SolrServerException;
import org.apache.Solr.client.Solrj.impl.HttpSolrClient;
import org.apache.Solr.common.SolrInputDocument;
public class DeletingAllDocuments {
public static void main(String args[]) throws SolrServerException, IOException {
//Preparing the Solr client
String urlString = "http://localhost:8983/Solr/my_core";
SolrClient Solr = new HttpSolrClient.Builder(urlString).build();
//Preparing the Solr document
SolrInputDocument doc = new SolrInputDocument();
//Deleting the documents from Solr
Solr.deleteByQuery("*");
//Saving the document
Solr.commit();
System.out.println("Documents deleted");
}
}
通过在终端中执行以下命令编译上述代码 -
[yiibai@ubuntu:/usr/local/solr-6.4.0/bin]$ javac DeletingAllDocuments.java
[yiibai@ubuntu:/usr/local/solr-6.4.0/bin]$ java DeletingAllDocuments
执行上述命令后,将得到以下输出。
Documents deleted
本站代码下载:http://www.yiibai.com/siteinfo/download.html
本文属作者原创,转载请注明出处:易百教程 » Solr删除文档数据
Solr检索数据 - Solr教程™
在本章中,我们将讨论如何使用Java Client API检索数据。假设有一个名为sample.csv的.csv文档,其中包含以下内容。
001,9848022337,Hyderabad,Rajiv,Reddy
002,9848022338,Kolkata,Siddarth,Battacharya
003,9848022339,Delhi,Rajesh,Khanna
可以使用post命令在核心-solr_sample下对此数据编制索引。
[yiibai@ubuntu:/usr/local/solr]$ ./post -c solr_sample sample.csv
以下是向Apache Solr索引添加文档的Java程序代码。将此代码保存在RetrievingData.java的文件中。
import java.io.IOException;
import org.apache.Solr.client.Solrj.SolrClient;
import org.apache.Solr.client.Solrj.SolrQuery;
import org.apache.Solr.client.Solrj.SolrServerException;
import org.apache.Solr.client.Solrj.impl.HttpSolrClient;
import org.apache.Solr.client.Solrj.response.QueryResponse;
import org.apache.Solr.common.SolrDocumentList;
public class RetrievingData {
public static void main(String args[]) throws SolrServerException, IOException {
//Preparing the Solr client
String urlString = "http://localhost:8983/Solr/my_core";
SolrClient Solr = new HttpSolrClient.Builder(urlString).build();
//Preparing Solr query
SolrQuery query = new SolrQuery();
query.setQuery("*:*");
//Adding the field to be retrieved
query.addField("*");
//Executing the query
QueryResponse queryResponse = Solr.query(query);
//Storing the results of the query
SolrDocumentList docs = queryResponse.getResults();
System.out.println(docs);
System.out.println(docs.get(0));
System.out.println(docs.get(1));
System.out.println(docs.get(2));
//Saving the operations
Solr.commit();
}
}
通过在终端中执行以下命令编译上述代码 -
[yiibai@ubuntu:/usr/local/solr]$ javac RetrievingData.java
[yiibai@ubuntu:/usr/local/solr]$ java RetrievingData
执行上述命令后,将得到以下输出。
{numFound = 3,start = 0,docs = [SolrDocument{id=001, phone = [9848022337],
city = [Hyderabad], first_name = [Rajiv], last_name = [Reddy],
_version_ = 1547262806014820352}, SolrDocument{id = 002, phone = [9848022338],
city = [Kolkata], first_name = [Siddarth], last_name = [Battacharya],
_version_ = 1547262806026354688}, SolrDocument{id = 003, phone = [9848022339],
city = [Delhi], first_name = [Rajesh], last_name = [Khanna],
_version_ = 1547262806029500416}]}
SolrDocument{id = 001, phone = [9848022337], city = [Hyderabad], first_name = [Rajiv],
last_name = [Reddy], _version_ = 1547262806014820352}
SolrDocument{id = 002, phone = [9848022338], city = [Kolkata], first_name = [Siddarth],
last_name = [Battacharya], _version_ = 1547262806026354688}
SolrDocument{id = 003, phone = [9848022339], city = [Delhi], first_name = [Rajesh],
last_name = [Khanna], _version_ = 1547262806029500416}
本站代码下载:http://www.yiibai.com/siteinfo/download.html
本文属作者原创,转载请注明出处:易百教程 » Solr检索数据
Solr查询数据 - Solr教程™
除了存储数据,Apache Solr还提供了一些在需要时查询数据的功能。 Solr提供了一些参数,可以使用它们来在查询存储的数据。
在下表中,我们列出了Apache Solr中提供的各种常用的一些查询参数。
参数 | 描述 |
q | 这是Apache Solr的主要查询参数,文档根据它们与此参数中的术语的相似性来评分。 |
fq | 这个参数表示Apache Solr的过滤器查询,将结果集限制为与此过滤器匹配的文档。 |
start | start参数表示页面的起始偏移量,此参数的默认值为0。 |
rows | 这个参数表示每页要检索的文档的数量。此参数的默认值为10。 |
sort | 这个参数指定由逗号分隔的字段列表,根据该列表对查询的结果进行排序。 |
fl | 这个参数为结果集中的每个文档指定返回的字段列表。 |
wt | 这个参数表示要查看响应结果的写入程序的类型。 |
您可以查看所有这些参数作为查询Apache Solr的选项。访问Apache Solr的主页。 在页面的左侧,单击选项“查询(Query)”。 在这里,可以查看查询参数的字段。
检索记录
假设我们在 my_core 核心中有3条记录。要从所选核心中检索特定记录,则需要传递特定文档的字段的名称和值对。例如,如果要使用字段id和值来检索记录,则需要将字段的名称 - 值对作为参数q的值传递为 - id:001,然后执行查询。
以同样的方式,您可以通过将*:*作为值传递给参数q来检索索引中的所有记录,如下面的屏幕截图所示。
从第二个记录开始检索
可以通过将1作为值传递给参数start来从第二条记录中检索记录,如下面的屏幕截图所示。
限制记录数
可以通过在rows参数中指定值来限制记录数。例如,可以通过将值2传递到参数行(row),将查询结果中的记录总数限制为2,如下面的屏幕截图所示。
响应写入器类型
可以通过从参数wt的所提供的值中,选择一个来获取所需文档类型的响应。
在上面的例子中,我们选择了.csv格式来获取响应。
字段列表
如果想在结果文档中显示指定字段,则需要传递必填写的字段列表,用逗号分隔,作为属性fl的值。
在以下示例中,尝试检索以下几个字段: id,phone和first_name。
本站代码下载:http://www.yiibai.com/siteinfo/download.html
本文属作者原创,转载请注明出处:易百教程 » Solr查询数据
Solr构面(faceting) - Solr教程™
在Apache Solr中的构面或分组(faceting)指的是将搜索结果分类到各种类别中。在本章中,我们将讨论Apache Solr中可用的faceting类型 -
- 查询faceting - 返回当前搜索结果中与给定查询匹配的文档数。
- 日期faceting - 它返回在特定日期范围内的文档数。
构面或分组(faceting)命令被添加到任何正常的Solr查询请求,并且faceting计数在同一个查询响应中返回。
faceting查询示例
使用字段faceting,我们可以检索所有字词的计数,或者只检索任何给定字段中的顶部字词。
作为一个示例,看看以下books.csv文件,其中包含有关各种书的数据。
id,cat,name,price,inStock,author,series_t,sequence_i,genre_s
0553573403,book,A Game of Thrones,5.99,true,George R.R. Martin,"A Song of Ice
and Fire",1,fantasy
0553579908,book,A Clash of Kings,10.99,true,George R.R. Martin,"A Song of Ice
and Fire",2,fantasy
055357342X,book,A Storm of Swords,7.99,true,George R.R. Martin,"A Song of Ice
and Fire",3,fantasy
0553293354,book,Foundation,7.99,true,Isaac Asimov,Foundation Novels,1,scifi
0812521390,book,The Black Company,4.99,false,Glen Cook,The Chronicles of The
Black Company,1,fantasy
0812550706,book,Ender's Game,6.99,true,Orson Scott Card,Ender,1,scifi
0441385532,book,Jhereg,7.95,false,Steven Brust,Vlad Taltos,1,fantasy
0380014300,book,Nine Princes In Amber,6.99,true,Roger Zelazny,the Chronicles of
Amber,1,fantasy
0805080481,book,The Book of Three,5.99,true,Lloyd Alexander,The Chronicles of
Prydain,1,fantasy
080508049X,book,The Black Cauldron,5.99,true,Lloyd Alexander,The Chronicles of
Prydain,2,fantasy
使用post工具将此文件发布到Apache Solr。
[yiibai@ubuntu:/usr/local/solr/bin]$ ./post -c solr_sample books.csv
在执行上述命令时,给定books.csv文件中的所有文档都将上传到Apache Solr。
现在对集合或核心:solr_sample上的0行字段 author 执行一个分面查询。
打开Apache Solr的Web UI,在页面的左侧,选中复选框facet,如下面的屏幕截图所示。
在选中复选框(facet)时,它会额外显示三个文本字段,以便传递构面搜索的参数。 现在,作为查询的参数,传递以下值。
q = *:*, rows = 0, facet.field = author
最后,通过单击执行查询按钮执行查询。如下所示 -
最后,通过单击执行查询按钮执行查询。得到如下结果-
它基于作者对索引中的文档进行分类,并指定每个作者贡献的图书数量。
使用Java客户端API进行构面
以下是Java程序向Apache Solr索引查询文档。将此代码保存在HitHighlighting.java文件中。
import java.io.IOException;
import java.util.List;
import org.apache.Solr.client.Solrj.SolrClient;
import org.apache.Solr.client.Solrj.SolrQuery;
import org.apache.Solr.client.Solrj.SolrServerException;
import org.apache.Solr.client.Solrj.impl.HttpSolrClient;
import org.apache.Solr.client.Solrj.request.QueryRequest;
import org.apache.Solr.client.Solrj.response.FacetField;
import org.apache.Solr.client.Solrj.response.FacetField.Count;
import org.apache.Solr.client.Solrj.response.QueryResponse;
import org.apache.Solr.common.SolrInputDocument;
public class HitHighlighting {
public static void main(String args[]) throws SolrServerException, IOException {
//Preparing the Solr client
String urlString = "http://localhost:8983/Solr/my_core";
SolrClient Solr = new HttpSolrClient.Builder(urlString).build();
//Preparing the Solr document
SolrInputDocument doc = new SolrInputDocument();
//String query = request.query;
SolrQuery query = new SolrQuery();
//Setting the query string
query.setQuery("*:*");
//Setting the no.of rows
query.setRows(0);
//Adding the facet field
query.addFacetField("author");
//Creating the query request
QueryRequest qryReq = new QueryRequest(query);
//Creating the query response
QueryResponse resp = qryReq.process(Solr);
//Retrieving the response fields
System.out.println(resp.getFacetFields());
List<FacetField> facetFields = resp.getFacetFields();
for (int i = 0; i > facetFields.size(); i++) {
FacetField facetField = facetFields.get(i);
List<Count> facetInfo = facetField.getValues();
for (FacetField.Count facetInstance : facetInfo) {
System.out.println(facetInstance.getName() + " : " +
facetInstance.getCount() + " [drilldown qry:" +
facetInstance.getAsFilterQuery());
}
System.out.println("Hello");
}
}
}
通过在终端中执行以下命令编译上述代码 -
[yiibai@ubuntu:/usr/local/solr/bin]$ javac HitHighlighting.java
[yiibai@ubuntu:/usr/local/solr/bin]$ java HitHighlighting
执行上述命令后,将得到以下输出。
[author:[George R.R. Martin (3), Lloyd Alexander (2), Glen Cook (1), Isaac
Asimov (1), Orson Scott Card (1), Roger Zelazny (1), Steven Brust (1)]]
本站代码下载:http://www.yiibai.com/siteinfo/download.html
本文属作者原创,转载请注明出处:易百教程 » Solr构面(faceting)