puccene/analysis

puccene的分析包。

0.1.x-dev 2022-12-31 22:17 UTC

This package is auto-updated.

Last update: 2024-08-29 05:50:49 UTC


README

文本分析使puccene能够执行全文搜索,搜索结果返回所有相关结果,而不仅仅是精确匹配。

如果您搜索“Quick fox jumps”,您可能想要包含“A quick brown fox jumps over the lazy dog”的文档,您可能还想要包含类似“fast fox”或“foxes leap”等相关词的文档。

这是puccene/pucene项目的子树分割,请在此主仓库创建问题。

分词

分析通过分词使全文搜索成为可能:将文本分解成更小的部分,称为标记。在大多数情况下,这些标记是单个单词。

如果您将短语“the quick brown fox jumps”作为一个单独的字符串进行索引,并且用户搜索“quick fox”,它不会被考虑为匹配。然而,如果您对短语进行分词并分别索引每个单词,则查询字符串中的术语可以单独查找。这意味着它们可以通过搜索“quick fox”、“fox brown”或其他变体进行匹配。

规范化

分词使对单个术语进行匹配成为可能,但每个标记仍然按字面意思匹配。这意味着

  • 搜索“Quick”不会匹配“quick”,尽管您可能希望这两个术语相互匹配
  • 尽管“fox”和“foxes”有相同的词根,但搜索“foxes”不会匹配“fox”或反之亦然。
  • 搜索“jumps”不会匹配“leaps”。虽然它们没有共享词根,但它们是同义词,有相似的意义。

为了解决这些问题,文本分析可以将这些标记规范化为标准格式。这使得您可以匹配与搜索术语不完全相同,但足够相似以仍然相关的标记。例如

  • Quick可以转换为小写:quick
  • foxes可以词干提取,或减少到其词根:fox
  • jumpleap是同义词,可以索引为单个单词:jump

为了确保搜索术语按预期匹配这些单词,您可以将相同的分词和规范化规则应用于查询字符串。例如,搜索“Foxes leap”可以规范化为搜索“fox jump”。

自定义文本分析

文本分析由分析器执行,它是一组控制整个过程的规则。

puccene包括一个默认的分析器,称为标准分析器,它适用于大多数用例。

如果您想定制您的搜索体验,您可以选择不同的内置分析器,甚至配置一个自定义分析器。一个自定义分析器让您控制分析过程的每个步骤,包括

  • 对分词前的文本的更改
  • 文本如何转换为标记
  • 在索引或搜索之前对标记进行的规范化更改

示例

目录examples中包含多个文件,这些文件包含如何使用这个库的示例。

免责声明

本文高度借鉴自:https://github.com/elastic/elasticsearch/blob/v8.5.3/docs/reference/analysis/overview.asciidoc