我已经在Postgresql中设置了一个新的文本搜索配置.此配置使用一个空的停止字文件DictFile和AffFile.
一个简单的测试…
SELECT * FROM ts_debug('public.myconfig','C++ and C# and PHP');
…工作(几乎)罚款,除了’C’和’C#’的词汇都是’C’的事实.基本上,我想做的就是确保’C’的词汇是’C’,’C#’的词典是’C”,因此用户可以查询’C’.
问题是双重的.
原文链接:https://www.f2er.com/postgresql/192533.html>第一个问题是索引.默认配置使用词干来索引数据,因此您可以获得’C’和’C#’的词法’C’.您可以使用“简单”配置对数据进行索引,但是在索引中最终会出现不需要的字词.我所做的是将’C’转换为’Cplusplus’并进行索引.由于“Cplusplus”没有lexeme,因此它将被复制.您可以通过使索引数据中的“CSharp”对’C#’执行相同的操作.
>第二个问题是搜索.现在索引的数据是可以的,我们需要确保我们转换特殊字的搜索字词.如果用户键入“C”,则需要在执行搜索之前将其转换为“Cplusplus”.
我在DB上创建了一个函数,该函数带有一个字符串,并转换了所有特殊术语的发生.
我没有使用TSearch一段时间,所以我不知道TSearch是否允许您设置和例外列表与允许使用的禁用词一样.