作者:mobiledu2502887507 | 来源:互联网 | 2023-05-19 14:55
源地址:http:www.jb51.netarticle64544.htm开发Web应用时,你经常要加上搜索功能。甚至还不知能要搜什么,就在草图上画了一个放大镜。搜索是项
源地址:http://www.jb51.net/article/64544.htm
开发Web应用时,你经常要加上搜索功能。甚至还不知能要搜什么,就在草图上画了一个放大镜。
搜索是项非常重要的功能,所以像elasticsearch和SOLR这样的基于lucene的工具变得很流行。它们都很棒。但使用这些大规模“杀伤性”的搜索武器前,你可能需要来点轻量级的,但又足够好的搜索工具。
所谓“足够好”,我是指一个搜索引擎拥有下列的功能:
- 词根(Stemming)
- 排名/提升(Ranking / Boost)
- 支持多种语言
- 对拼写错误模糊搜索
- 方言的支持
幸运的是PostgreSQL对这些功能全支持。
本文的目标读者是:
- 使用PostgreSQL,同时又不想安装其它的搜索引擎。
- 使用其它的数据库(比如MySQL),同时需要更好的全文搜索功能。
本文中我们将通过下面的表和数据说明PostgreSQL的全文搜索功能。
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
CREATE
TABLE
author(
id SERIAL
PRIMARY
KEY
,
name
TEXT
NOT
NULL
);
CREATE
TABLE
post(
id SERIAL
PRIMARY
KEY
,
title TEXT
NOT
NULL
,
content TEXT
NOT
NULL
,
author_id
INT
NOT
NULL
references
author(id) );
CREATE
TABLE
tag(
id SERIAL
PRIMARY
KEY
,
name
TEXT
NOT
NULL
);
CREATE
TABLE
posts_tags(
post_id
INT
NOT
NULL
references
post(id),
tag_id
INT
NOT
NULL
references
tag(id)
);
INSERT
INTO
author (id,
name
)
VALUES
(1,
'Pete Graham'
),
(2,
'Rachid Belaid'
),
(3,
'Robert Berry'
);
INSERT
推荐阅读
-
php更新数据库字段的函数是,php更新数据库字段的函数是 ...
[详细]
蜡笔小新 2024-11-12 11:37:31
-
本文详细介绍了如何在PHP中实现周排行和月排行榜的开发,包括数据库设计、数据记录和查询方法。涉及的知识点包括MySQL的GROUP BY、WEEK和MONTH函数。 ...
[详细]
蜡笔小新 2024-11-14 19:14:58
-
-
本文介绍了 Go 语言中的高性能、可扩展、轻量级 Web 框架 Echo。Echo 框架简单易用,仅需几行代码即可启动一个高性能 HTTP 服务。 ...
[详细]
蜡笔小新 2024-11-14 18:30:58
-
包含phppdoerrorcode的词条 ...
[详细]
蜡笔小新 2024-11-14 12:06:14
-
本文介绍如何在 Spring Boot 项目中配置全局文件上传路径,并通过读取配置项实现文件上传功能。通过这种方式,可以更好地管理和维护文件路径。 ...
[详细]
蜡笔小新 2024-11-13 11:19:38
-
本文介绍如何在将数据库从服务器复制到本地时,处理因外键约束导致的数据插入失败问题。 ...
[详细]
蜡笔小新 2024-11-12 19:05:11
-
本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ...
[详细]
蜡笔小新 2024-11-12 18:13:16
-
DVWA学习笔记系列:深入理解CSRF攻击机制 ...
[详细]
蜡笔小新 2024-11-11 13:19:51
-
蜡笔小新 2024-11-14 16:26:25
-
一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ...
[详细]
蜡笔小新 2024-11-14 11:01:49
-
文章目录:1.字符串函数2.日期时间函数2.1获取日期时间2.2日期与时间戳的转换2.3获取年月日、时分秒、星期数、天数等函数2.4时间和秒钟的转换2. ...
[详细]
蜡笔小新 2024-11-14 10:57:02
-
本文将介绍如何使用 Spring JdbcTemplate 进行数据库操作,包括查询和插入数据。我们将通过一个学生表的示例来演示具体步骤。 ...
[详细]
蜡笔小新 2024-11-14 10:33:29
-
本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ...
[详细]
蜡笔小新 2024-11-12 16:10:39
-
本文详细探讨了Struts框架中几种常用的数据标签,包括`s:property`、`s:a`、`s:debug`、`s:include`和`s:param`。这些标签在实际开发中的应用广泛,不仅用于数据展示和链接生成,还提供了调试和模块化功能。文章分析了每个标签的基本用法及其属性配置,并结合具体示例介绍了如何进行性能优化和最佳实践。通过这些内容,开发者可以更好地理解和利用这些标签,提高开发效率和代码质量。 ...
[详细]
蜡笔小新 2024-10-24 12:19:03
-
在 CentOS 7 上部署和配置 RabbitMQ 消息队列系统时,首先需要安装 Erlang,因为 RabbitMQ 是基于 Erlang 语言开发的。具体步骤包括:安装必要的依赖项,下载 Erlang 源码包(可能需要一些时间,请耐心等待),解压源码包,解决可能出现的错误,验证安装是否成功,并将 Erlang 添加到环境变量中。接下来,下载 RabbitMQ 的 tar.xz 压缩包,并进行解压和安装。确保每一步都按顺序执行,以保证系统的稳定性和可靠性。 ...
[详细]
蜡笔小新 2024-10-24 06:28:41
-
mobiledu2502887507
这个家伙很懒,什么也没留下!
|