我在PostgreSQL中设置了一个新的文本搜索配置.此配置使用空停止文件文件,DictFile和AffFile.
一个简单的测试......
SELECT *
FROM ts_debug('public.myconfig', 'C++ and C# and PHP');
Run Code Online (Sandbox Code Playgroud)
......除了"C++"和"C#"的词汇都是"C"这一事实外,它的作用很接近.基本上,我想要做的就是确保'C++'的词汇是'C++'并且'C#'的词汇是'C#',因此使用户能够查询'C++'.
问题是双重的。
第一个问题是索引。默认配置使用词干来索引数据,因此您将获得“C++”和“C#”的词素“C”。您可以使用“简单”配置来索引数据,但最终会在索引中出现不需要的单词。我所做的是将“C++”转换为“Cplusplus”并对其进行索引。由于'Cplusplus' 没有词素,它将按原样输入。您可以通过在索引数据中将其设为“CSharp”来对“C#”执行相同操作。
第二个问题是搜索。现在索引数据没问题,我们需要确保我们转换了特殊词的搜索词。如果用户键入“C++”,则需要在执行搜索之前将其转换为“Cplusplus”。
我在 DB 上创建了一个函数,它接收一个字符串并转换所有出现的特殊术语。
我有一段时间没有使用 TSearch,所以我不确定 TSearch 是否允许您像允许停用词一样设置和例外列表。
| 归档时间: |
|
| 查看次数: |
1236 次 |
| 最近记录: |