专栏首页云计算教程系列使用Solr向您的站点添加自定义搜索
原创

使用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 条评论
登录 后参与评论

相关文章

  • 如何使用Ubuntu 16.04上的Let's Encrypt保护Apache

    本教程将向您展示如何在运行Apache作为Web服务器的Ubuntu 16.04服务器上设置Let's Encrypt的TLS / SSL证书。

    新巴子
  • 如何在Debian 8上使用X2Go设置远程桌面

    为了提高效率,安全性以及从命令行执行所有操作的能力,许多服务器不使用图形用户界面(GUI)。但是,有时您需要在远程服务器上运行GUI应用程序,例如在浏览器中测试...

    新巴子
  • 如何在Ubuntu 14.04上配置Apache以使用自定义错误页面

    Apache是世界上最受欢迎的Web服务器。它功能强大,功能丰富且灵活。在设计网页时,有助于自定义那些客户将看的所有内容,当然这些内容也包括他们请求不可用内容时...

    新巴子
  • Solr各个版本的差异

    构建搜索引擎常用的方式目前主要有两种:一是solr,一是ES。我这里推荐solr,如果你还要加上大数据的一些特性,建议使用ES。

    物流IT圈
  • Myeclipse 出现An internal error occurred during 解决方案

    An internal error occurred during: "Launching java.lang.NullPointerException A...

    用户1220053
  • Running Solr on Kubernetes

    我们将为搜索工程师介绍在Kubernetes(k8s)上运行Solr的基础知识。 具体来说,我们涵盖以下主题:

    黎明你好
  • 设计模式 (二)——观察者模式(Observer,行为型)

    使用设计模式可以提高代码的可复用性、可扩充性和可维护性。观察者模式(Observer Pattern)属于行为型模式,在对象之间定义一对多的依赖,这样一来,当一...

    Dabelv
  • 采购太复杂 运营没经验 Ovum称SDN/NFV会来得比较晚

    SDNLAB微信号:SDNLAB Ovum近期调查访问了电信行业多个层面的高管,对于电信网络转向以软件为中心的变化,电信运营商如何看待。调查发现,高管们的意见比...

    SDNLAB
  • Elasticsearch入门

    Elasticsearch是一个高度可扩展的、开源的、基于 Lucene 的全文搜索和分析引擎。它允许您快速,近实时地存储,搜索和分析大量数据,并支持多租户。

    爱撸猫的杰
  • Python内置函数使用说明

    函数功能简要说明abs(x)返回数字x的绝对值或复数x的模all(iterable)如果对于可迭代对象iterable中所有元素x都有bool(x)为True,...

    Python小屋屋主

扫码关注云+社区

领取腾讯云代金券