簡體   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