繁体   English   中英

PostgreSQL tsvector 配置:如何允许特殊字符?

[英]PostgreSQL tsvector configuration: how to allow special characters?

我在 PostgreSQL 中设置了新的文本搜索配置。 此配置使用空的停用词文件 DictFile 和 AffFile。

一个简单的测试...

SELECT * 
  FROM ts_debug('public.myconfig', 'C++ and C# and PHP');

...工作(几乎)很好,除了“C++”和“C#”的词位都是“C”这一事实。 基本上,我想做的就是确保“C++”的词位是“C++”,而“C#”的词位是“C#”,从而使用户能够查询“C++”。

问题有两个方面。

  1. 第一个问题是索引。 默认配置使用词干来索引数据,因此您会得到“C++”和“C#”的词位“C”。 您可以使用“简单”配置来索引数据,但最终会在索引中出现不需要的单词。 我所做的是将“C++”转换为“Cplusplus”并将其编入索引。 由于 'Cplusplus' 没有词位,它将按原样被 inxexed。 您可以通过在索引数据中将其设为“CSharp”来对“C#”执行相同的操作。

  2. 第二个问题是搜索。 现在索引数据没问题,我们需要确保将搜索词转换为特殊词。 如果用户键入“C++”,您需要在执行搜索之前将其转换为“Cplusplus”。

我在 DB 上创建了一个 function,它接收一个字符串并转换所有出现的特殊术语。

我有一段时间没有使用 TSearch,所以我不确定 TSearch 是否允许您设置和例外列表,就像它允许停用词一样。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM