使用Solr向您的站点添加自定义搜索

Solr是一个高性能,采用Java5开发,基于Lucene的全文搜索服务器。同时对其进行了扩展,提供了比Lucene更为丰富的查询语言,同时实现了可配置、可扩展并对查询性能进行了优化,并且提供了一个完善的功能管理界面,是一款非常优秀的全文搜索引擎。它对外提供类似于Web-service的API接口。用户可以通过http请求,向搜索引擎服务器提交一定格式的XML文件,生成索引;也可以通过Http Get操作提出查找请求,并得到XML格式的返回结果。 文档通过Http利用XML 加到一个搜索集合中。查询该集合也是通过http收到一个XML/JSON响应来实现。它的主要特性包括:高效、灵活的缓存功能,垂直搜索功能,高亮显示搜索结果,通过索引复制来提高可用性,提供一套强大Data Schema来定义字段,类型和设置文本分析,提供基于Web的管理界面等。

开始之前

  1. 熟悉我们的入门教程并完成设置腾讯云CVM服务器主机名和时区的步骤。没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器
  2. 本教程需要您更新系统和软件包存储库并进行安装wget工具,您可以参考我们社区的如何使用wget

注意 本教程中的步骤需要root权限。请确保以root身份或使用sudo前缀运行以下步骤。

安装Java

  • 安装Java 8 JDK:

Debian和Ubuntu

  • 添加Java 8存储库,下载GPG密钥并安装Java 8。
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee /etc/apt/sources.list.d/webupd8team-java.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
apt update
apt install oracle-java8-installer
  • 在大多数系统上,还需要下载并安装oracle-java8-set-default软件包。要进行验证,请运行以下命令并检查匹配的输出。如果输出不匹配,请继续执行第三步.否则,Java 8安装完成:
dpkg --list | grep oracle

输出:

    ii  oracle-java8-installer        8u144-1~webupd8~0            all          Oracle Java(TM) Development Kit (JDK) 8
    ii  oracle-java8-set-default      8u144-1~webupd8~0            all          Set Oracle JDK 8 as default Java
  • 安装oracle-java8-set-default包:
apt install oracle-java8-set-default

以Fedora和RHEL为基础

    yum install java-1.8.0-openjdk.x86_64
**Arch Linux**
    pacman -S jre8-openjdk
**openSUSE**
    zypper in java-1_8_0-openjdk
  • 验证Java安装:
java -version

输出应类似于:

openjdk version "1.8.0_144"
OpenJDK Runtime Environment (IcedTea 3.5.1) (suse-13.3-x86_64)
OpenJDK 64-Bit Server VM (build 25.144-b01, mixed mode)

下载并安装Apache Solr

您可以将以下示例中的6.6.1的每个实例替换为Apache Solr官方网站上的最新版本。

  • 切换到/opt目录并下载Solr:
cd /opt
wget http://apache.claz.org/lucene/solr/6.6.1/solr-6.6.1.tgz
  • 从下载的存档中提取Solr安装脚本:
tar xzf solr-6.6.1.tgz solr-6.6.1/bin/install_solr_service.sh --strip-components=2
  • 执行Solr安装脚本。Arch Linux用户应该跳过以下Arch特定的步骤:
bash ./install_solr_service.sh solr-6.6.1.tgz

Arch Linux

  • 下载Arch Linux的安装脚本:
wget https://github.com/Darkstar90/solr-arch-install/blob/master/install_solr_service_arch.sh
  • 执行自定义Arch Linux安装脚本:
bash ./install_solr_service_arch.sh solr-6.6.1.tgz

​ 想要了解更多Linux教程请前往腾讯云+社区学习更多知识。

为Solr 创建防火墙规则

Solr 默认侦听端口8983。打开端口以允许使用首选防火墙管理器访问Web界面:

FirewallD

sudo firewall-cmd --zone=public --add-port=8983/tcp --permanent
sudo firewall-cmd --reload

UFW

ufw allow 8983/tcp comment "Solr port"

iptables

iptables -A INPUT -p tcp --dport 8983 -j ACCEPT -m comment --comment "Solr port"

注意 使用iptables-persistent保存你的iptables规则,否则它会在下次重启时丢失。

访问Solr管理页面

Solr通过面向Web的管理页面进行管理,可以通过您的腾讯云CVM的IP地址或8983端口上的域名来访问。

在Web浏览器中,输入您的Linode的IP地址或域名,然后输入端口8983

198.51.100.0:8983/solr

保护Solr管理页面

为Solr管理页面设置受密码保护的登录页面:

  • 切换到/opt/solr/server/etc并编辑webdefault.xml文件。在</web-app>之前,将以下内容添加到文件末尾:
    <login-config>
           <auth-method>BASIC</auth-method>
           <realm-name>Solr Admin Auth</realm-name>
    </login-config>    
    <security-constraint> 
           <web-resource-collection>
                 <web-resource-name>Solr Admin Auth</web-resource-name>
                 <url-pattern>/*</url-pattern>
          </web-resource-collection>
          <auth-constraint>
              <role-name>user</role-name>
          </auth-constraint>
       </security-constraint>
  • 在同一目录中,编辑jetty.xml文件并在</Configure>结尾之前添加以下内容:
    <Call name="addBean">
           <Arg>  
                <New class="org.eclipse.jetty.security.HashLoginService"> 
                      <Set name="name">Solr Admin Auth</Set> 
                      <Set name="config"><SystemProperty name="jetty.home" default="."/>/etc/realm.properties</Set>
                      <Set name="refreshInterval">0</Set> 
                 </New>
            </Arg>
     </Call>

  • 在当前目录中创建一个realm.properties文件以添加用户登录信息。用您选择的用户和安全密码替换用户名admin和密码admin123
    admin: admin123,user

在这里,admin:命令使用admin123密码来指定用户名“admin” 。而user命令将此新用户归类到webdefault.xml中已设置的“user”用户名称。

  • 重启solr服务:
systemctl restart solr
  • 您还可以使用此过程来保护Solr中的其他网页。例如,如果您创建了两个Solr搜索核心,core1并且core2,可以通过添加其他<url-pattern>行到webdefault.xml来限制对两者的访问:
<url-pattern>/core1/*</url-pattern>
<url-pattern>/core2/*</url-pattern>

通过在腾讯云CVM服务器上安装Solr,您现在可以创建搜索索引并添加数据,或将其与Web应用程序或网站集成。

了解更多

有关此主题的其他信息,您可能需要参考以下资源。


参考文献:《Add a Custom Search to your Site with Solr》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏大魏分享(微信公众号:david-share)

应用服务器到底是个啥?| 从开发角度看应用架构2:对Java EE应用进行打包和部署!

37020
来自专栏程序员叨叨叨

windwos平台下 Android SDK更新慢的解决方法

我们在使用Eclipse的Android SDK更新时,常常会遇到SDK更新慢或更新不了的问题(Fail to fetch...),接下来我们来看看解决办法:

8230
来自专栏向治洪

Android Studio安装插件Genymotion

Android Studio安装插件的方式其实和Eclipse大同小异。废话不多说,直接上图: ? 区域1:你当前已经安装了的插件 区域2:在线安装 区...

19680
来自专栏FreeBuf

weblogic安全配置二三事

*本文原创作者:shewey,本文属FreeBuf原创奖励计划,未经许可禁止转载 1、引言 前段时间Java的反序列化漏洞吵得沸沸扬扬,因工作原因需要对webl...

47350
来自专栏云计算教程系列

如何在Ubuntu 14.04上安装CouchDB和Futon

Apache CouchDB,类似Redis,Cassandra和MongoDB,是一个NoSQL数据库。CouchDB将数据存储为JSON文档,这些文档本质上...

30510
来自专栏向治洪

studio安装插件

Android Studio安装插件的方式其实和Eclipse大同小异。废话不多说,直接上图: ? 区域1:你当前已经安装了的插件 区域2:在线安装 区...

20150
来自专栏有困难要上,没有困难创造困难也要上!

使用docker-compose创建spark集群

23420
来自专栏青玉伏案

JavaEE开发之SpringMVC中的静态资源映射及服务器推送技术

在上篇博客中,我们聊了《JavaEE开发之SpringMVC中的自定义拦截器及异常处理》。本篇博客我们继续的来聊SpringMVC的东西,下方我们将会聊到js、...

24360
来自专栏向治洪

Android Studio安装插件

Android Studio安装插件的方式其实和Eclipse大同小异。废话不多说,直接上图: ? 区域1:你当前已经安装了的插件 区域2:在线安装 区...

21180
来自专栏C/C++基础

Linux命令(24)——mv命令

mv命令用来为文件或目录改名,或将文件或目录移入其它位置。如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。

26510

扫码关注云+社区

领取腾讯云代金券