seo优化全解第1版-搜索引擎入门详解(el学院全文搜索功能(支持多模型搜索)())

优采云 发布时间: 2021-09-12 01:03

  seo优化全解第1版-搜索引擎入门详解(el学院全文搜索功能(支持多模型搜索)())

  基于xunsearch + Laravel Scout实现Laravel Academy全文搜索功能(支持多模型搜索)

  由College Jun 3 年前创建,最后更新于11 个月前版本#216225 views11 likes1 采集

  概述

  Laravel Scout 为实现 Eloquent 模型全文搜索提供了一个简单的、基于驱动程序的解决方案。通过使用模型观察器,Scout 会自动更新模型记录的索引,非常方便易用。学院的文章搜索功能可以通过它来实现。

  Laravel Scout 基于模型+底层搜索驱动扩展包实现模型全文搜索。目前Scout默认通过Algolia驱动提供搜索功能。但是,编写自定义驱动程序非常简单,我们可以通过自己的搜索扩展Scout轻松实现。毕竟Algolia是付费API,而且是对外服务。国内的访问速度和可用性无法保证,所以自然略过。下一个选择是自己构建一个搜索引擎。中文搜索的解决方案有很多,比如轻量级的Xunsearch(xunsearch)、coreseek(sphinx变体,支持中文搜索),适合中小型应用,Elasticsearch适合大型应用。

  就学院的规模来说,寻搜就够了。它简单易用。只需几步,快速搭建自己的搜索引擎,其客户中就有中国知名编程社区segmentfault。背书也能让我们放心使用。

  安装迅搜服务器

  在服务器上安装迅搜非常简单,只需以下几步即可:

  wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2

tar -xjf xunsearch-full-latest.tar.bz2 xunsearch

cd xunsearch/

sudo sh setup.sh

  安装完成后,使用以下命令启动:

  sudo bin/xs-ctl.sh start

  上述命令默认会*敏*感*词*本地环回地址(127.0.0.1)8383/8384)上的服务。如果有多台机器需要访问迅搜服务器,则需要使用以下命令启动:

  bin/xs-ctl.sh -b inet start

  以上过程没有报错,说明寻搜已经正常启动。

  如果是通过Docker启动迅搜服务,对应的Dockerfile如下:

  # xunsearch-dev docker

# created by hightman.20150826

#

# START COMMAND:

# docker run -d --name xunsearch -p 8383:8383 -p 8384:8384 \

# -v /var/xunsearch/data:/usr/local/xunsearch/data hightman/xunsearch:latest

#

FROM ubuntu:14.04

MAINTAINER hightman, hightman@twomice.net

# Install required packages

RUN apt-get update -qq

RUN apt-get install -qy --no-install-recommends \

wget make gcc g++ bzip2 zlib1g-dev

# Download & Install xunsearch-latest

RUN cd /root && wget -qO - http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2 | tar xj

RUN cd /root/xunsearch-full-* && sh setup.sh --prefix=/usr/local/xunsearch

RUN echo '' >> /usr/local/xunsearch/bin/xs-ctl.sh \

&& echo 'tail -f /dev/null' >> /usr/local/xunsearch/bin/xs-ctl.sh

# Configure it

VOLUME /usr/local/xunsearch/data

EXPOSE 8383

EXPOSE 8384

WORKDIR /usr/local/xunsearch

RUN echo "#!/bin/sh" > bin/xs-docker.sh \

&& echo "rm -f tmp/pid.*" >> bin/xs-docker.sh \

&& echo "echo -n > tmp/docker.log" >> bin/xs-docker.sh \

&& echo "bin/xs-indexd -l tmp/docker.log -k start" >> bin/xs-docker.sh \

&& echo "sleep 1" >> bin/xs-docker.sh \

&& echo "bin/xs-searchd -l tmp/docker.log -k start" >> bin/xs-docker.sh \

&& echo "sleep 1" >> bin/xs-docker.sh \

&& echo "tail -f tmp/docker.log" >> bin/xs-docker.sh

ENTRYPOINT ["sh"]

CMD ["bin/xs-docker.sh"]

  安装相关的PHP扩展包

  首先通过 Composer 安装 xunsearch 扩展包:

  composer require hightman/xunsearch

  安装寻搜扩展包后,在Laravel中使用Scout也需要安装相应的扩展包:

  composer require laravel/scout

  将配置文件scout.php发布到config目录:

  php artisan vendor:publish --provider="Laravel\Scout\ScoutServiceProvider"

  在scout.php中添加xunsearch相关配置:

  'xunsearch' => [

'host' => env('XUNSEARCH_HOST', '127.0.0.1'),

]

  接下来需要修改.env中的相关配置:

  SCOUT_DRIVER=xunsearch

XUNSEARCH_HOST=迅搜服务端IP地址

SCOUT_PREFIX=academy_

SCOUT_QUEUE=true

  注意我们把SCOUT_DRIVER改成xunsearch,XUNSEARCH_HOST必须和你安装迅搜的服务器IP一致,最后我们设置索引构建通过队列异步执行。学院主使用Laravel Horizo​​n实现队列系统。关于这个请移步对应文档查看内容,这里不再单独介绍。

  学院暂时只支持文章search,所以需要在对应的model中添加如下代码来支持索引自动更新和搜索:

  use Searchable;

  索引配置文件

  由于我们只是搜索college文章,我们只需要为其定义对应的索引配置文件,并在config目录下创建xs_article.ini:

  project.name = academy_article

project.default_charset = utf-8

server.index = xunsearch服务端IP:8383 // 不配置的话默认为127.0.0.1:8383

server.search = xunsearch服务端IP:8384 // 不配置的话默认为127.0.0.1:8384

[pid]

type = id

[title]

type = title

[summary]

[content]

type = body

[tag_text]

type = both

[category_id]

type = numeric

index = self

[author]

index = both

[author_id]

type = numeric

[view_count]

type = numeric

[vote_count]

type = numeric

[comment_count]

type = numeric

[publish_time]

  由您决定索引哪些字段。这只是一个参考。各领域的详细介绍请参考寻搜官方文档。我不会在这里重复它们。如果您想了解搜搜搜索引擎的工作流程和原理,请仔细阅读。迅索官方文档。

  编写寻搜童子军扩展类

  要实现基于迅搜驱动的搜索功能,还需要为其编写一个Scout扩展XunSearchEnginge:

<p>

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线