2011-05-11 119 views
0

嗨我已經構建了一個索引,並且需要搜索「C++」,「.net」或「c#」等單詞,但是 沒有結果出現。下面是我的配置:使用sphinx索引和搜索帶有像(++,#,。)標誌的單詞

source = xxxx 
path = /usr/local/etc/sphinx/var/data/xxxx 
docinfo = extern 
charset_type = utf-8 
min_word_len = 1 
min_infix_len = 7 
stopwords = /usr/local/etc/sphinx/var/stopwords/stop_words_en.txt 

我已經嘗試用SPH_MATCH_PHRASE和SPH_MATCH_ALL進行搜索,但並沒有什麼未來有用。

我該怎麼做才能做到這一點?

感謝 聶

回答

1

你必須charset_table選項配置包括符號+,#,。,

index YOUR_INDEX 
{ 
charset_table = 0..9, A..Z->a..z, a..z, +, #, U+002E, 

你可以檢查的話得到了如何通過CALL符號化關鍵字MySQL調用

with CONFIG你提供我會得到這樣的輸出

的MySQL> CALL的關鍵字( 'C++ .NET C#end_of_a_sentence。', 'YOUR_INDEX')

標記化歸一化 立方厘米 淨淨 立方厘米 端端 的 AA 句句

我除了你的配置輸出 標記化標準化 C++ C++ .NET .NET C# c# end end of a a sentence。句子。

點(。)charset_table裏該字在標記化一個句子的結尾的缺點,並用

索引一起「的例句」。

'句子'單詞將被標記爲'句子。和搜索'句子'沒有給你任何東西。

0

由於tmg_tt說,修改charset_table應該工作。

但是,你需要躲避#也可能是+,在索引定義sphinx.conf

charset_table=0..9, A..Z->a..z, _, a..z,\#, U+A8->U+B8, U+B8, U+C0..U+DF->U+E0..U+FF, U+E0..U+FF 

工程磅,但我還沒有想出如何逃脫+,至少在Sphinx 0.99

我發佈到sphinx論壇也是如此。

+1

發表的問題在http://sphinxsearch.com/forum/view.html?id=9980 – 2012-08-28 01:24:13

+0

建議使用#和+的HEX/Unicode等價物,這將是:U + 23,U + 2B 。另外,如果使用PHP,則urldecode和urlencode必須更改爲rawurldecode,rawurlencode或+將不起作用。 – 2012-08-28 21:24:11