[英]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++”。
问题有两个方面。
第一个问题是索引。 默认配置使用词干来索引数据,因此您会得到“C++”和“C#”的词位“C”。 您可以使用“简单”配置来索引数据,但最终会在索引中出现不需要的单词。 我所做的是将“C++”转换为“Cplusplus”并将其编入索引。 由于 'Cplusplus' 没有词位,它将按原样被 inxexed。 您可以通过在索引数据中将其设为“CSharp”来对“C#”执行相同的操作。
第二个问题是搜索。 现在索引数据没问题,我们需要确保将搜索词转换为特殊词。 如果用户键入“C++”,您需要在执行搜索之前将其转换为“Cplusplus”。
我在 DB 上创建了一个 function,它接收一个字符串并转换所有出现的特殊术语。
我有一段时间没有使用 TSearch,所以我不确定 TSearch 是否允许您设置和例外列表,就像它允许停用词一样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.