2014-02-21 27 views
0

我有一個異常文件,它打破了ignore_chars指令的功能。Sphinxsearch ignore_chars和異常工作

我正在使用的示例關鍵字是t-shirt

t-shirt出現在數據庫中。我需要ignore_chars指令來忽略-,因此用戶可以像tshirtt-shirt那樣進行搜索並獲得相同的結果。

CALL KEYWORDS('tshirt t-shirt', 'catalog')結果這裏是

+-----------+------------+ 
| tokenized | normalized | 
+-----------+------------+ 
| tshirt | TXRT  | 
| tshirt | TXRT  | 
+-----------+------------+ 

要獲得t shirt映射到上述結果,我已經創建了一個異常文件,該文件是這樣的:

t shirt > tshirt 

當我做查詢CALL KEYWORDS('t shirt tshirt t-shirt', 'catalog')這就是我得到的:

+-----------+------------+ 
| tokenized | normalized | 
+-----------+------------+ 
| tshirt | TXRT  | 
| tshirt | TXRT  | 
| shirt  | XRT  | 
+-----------+------------+ 

我期望發生的情況是例外文件會將單詞t shirt重寫爲單個關鍵字tshirt,並且所有3個標記都具有相同的標準化值。

除了現在在t-shirt關鍵字-也是不可忽視的,它只是映射到shirt,這會導致完全不同的標準化版本比tshirt。最重要的是,使用上面的任何相關關鍵字搜索返回0結果。

當我取出例外文件時,ignore_chars正常工作,搜索再次爲關鍵字工作。

回答

0

我沿着這條路走下去的原因是因爲我無法使wordform t shirt > tshirt工作。

字形被應用後被標記化,我認爲這是它沒有工作的原因。

事實證明,我的min_word_len被設置爲3,因此t shirt中的t未被正確讀取。我將min_word_len減少到1,現在字形正常工作。

這仍然不能解決ignore_charsexceptions的問題,但搜索字詞現在可用,所以我想這是我所需要的工作。