elzekool / koolsearch
基于令牌的搜索引擎
Requires
- php: >=5.3.7
This package is not auto-updated.
Last update: 2024-09-24 08:09:19 UTC
README
A Lucene inspired Search platform, very simple at the moment. Can be used if a simple LIKE query won't suffice. It's not meant to replace SOLR or Lucene in any way, they are far superior. Use KoolSearch if you want to know a little bit about search platforms or need a simple PHP/MySQL only solution.
KoolSearch旨在与KoolDevelop框架一起使用,但也可以单独使用。文件名遵循PSR-0标准。您必须编写自己的存储类。
一些KoolSearch平台理解的示例查询
- Apple -Computer
- OS +"MS Dos"
- +Linus +Tovalds
- +title:Ubuntu title:Linux "OS"
主要部分
这是组成KoolSearch平台的主要部分。
- 索引器和搜索器
- 存储
- 过滤器(字符过滤器、标记化器、转换器)
- 查询标记化器、解析器和元素
- 实体
索引器和搜索器
这是您将与之交互最多的类。索引器用于更新索引,搜索器用于查询索引。
存储
KoolSearch平台使用SQL数据库来存储索引。存储接口用于与数据库交互。如果使用KoolDevelop框架,则提供标准类。如果不使用此框架,则创建自己的。
过滤器(字符过滤器、标记化器、转换器)
用于索引和搜索,将字符串转换为术语。 字符过滤器在原始输入字符串上操作,执行诸如小写化、替换特殊字符等操作。 标记化器将过滤后的输入字符串转换为单个标记或术语。这些术语实际上是存储和从数据库中检索的。 转换器可以用于操作术语。它们在标记化术语上工作,而不是在输入字符串上。这使得它们与 字符过滤器 不同。转换器执行诸如删除重复术语、删除停用词和创建N-gram等操作。
查询标记化器、解析器和元素
KoolSearch支持用户友好的查询语法。这种语法由+和-运算符、字段选择(:)和短语组成。首先,搜索查询由标记化器标记化成标记。标记由解析器读取。解析器创建构成搜索查询的各个元素。目前支持元素是术语和短语。
实体
实体包含应用程序中使用的不同实体。这包括
- 术语,存储在索引中的搜索术语
- 文档,存储在索引中的索引文档,由其ID唯一标识
- 字段,索引字段。包含索引和搜索索引的配置
- 术语文档,索引建立的实际元素,包含术语和文档之间的链接
- 搜索结果,搜索器返回的搜索结果,包含文档、分数和匹配的术语文档