私は今、2日間、この上で私の心を失うのです...スフィンクス検索:文字セットテーブル困難
私はすべて英語のもの+ cからz S(と念のため、スフィンクス検索スロベニア文字を使用したいと思いますC)
ので、私はステップによって私自身のステップを作ることにした私は、適切な文字を取得するために、すべてネット上で探していたが、私はスクワットた...
...
これは私の指標であります
私は彼らの小文字対応に大きいC、CŠZはマッピングされ、そしてCに、C、C、SにšおよびZにZ に Cからのマッピングを追加し、最終的に、私はテーブルにこれら4つの文字を追加index classifieds
{
source = classifieds_src
path = c:\Sphinx\data\classifieds
docinfo = extern
min_infix_len = 2
infix_fields = title,keywords,summary,text
expand_keywords = 1
enable_star = 1
charset_type = utf-8
charset_table = 0..9, a..z, _, A..Z->a..z,-, U+002C, \
U+010C->U+010D, U+0106->U+0107, U+0160->U+0161, U+017D->U+017E, \
U+010D->c,U+0107->c, U+0161->s, U+017E->z, \
U+010D, U+0107, U+0161, U+017E
}
T1:HPのUSBoptičnamiška座prenosnik RH304 T2:ČiškaPCplus MO-U033 + F2(optična、brezžična、PS/2) T3:Miška....
これらは私の分類のタイトルですLogitechoptičnaNano M235 siva
db encodi NG:utf8_general_ci テーブルのエンコーディング:utf8_general_ci タイトルフィールド符号化:utf8_general_ci
テスト・ケース:
$testcase = array(
"miška",
"mi*ka",
"Čiška",
"čiška",
"miska",
"usb prenosnik",
"prenosnik miska",
"miška usb"
);
//api settings:
$this->sphinx->SetArrayResult(true);
$this->sphinx->setLimits(0, 100);
$this->sphinx->setMatchMode(SPH_MATCH_EXTENDED2);
$this->sphinx->SetSortMode(SPH_SORT_RELEVANCE, '@weight DESC');
$this->sphinx->SetRankingMode(SPH_RANK_PROXIMITY_BM25);
$this->sphinx->SetFieldWeights(array("title"=>100, "keywords"=>80, "summary"=>60,
"text"=>20, "slug"=>10));
、最終的には、試験結果:
キーワード(合計/ total_found) 言葉
miška (0/0)
Array
(
[*miška*] => Array
(
[docs] => 0
[hits] => 0
)
[miška] => Array
(
[docs] => 0
[hits] => 0
)
)
mi*ka (0/0)
Array
(
[*mi*] => Array
(
[docs] => 3
[hits] => 4
)
[mi] => Array
(
[docs] => 1
[hits] => 1
)
[*2aka*] => Array
(
[docs] => 0
[hits] => 0
)
[2aka] => Array
(
[docs] => 0
[hits] => 0
)
)
Čiška (0/0)
Array
(
[*čiška*] => Array
(
[docs] => 0
[hits] => 0
)
[čiška] => Array
(
[docs] => 0
[hits] => 0
)
)
čiška (0/0)
Array
(
[*čiška*] => Array
(
[docs] => 0
[hits] => 0
)
[čiška] => Array
(
[docs] => 0
[hits] => 0
)
)
miska (0/0)
Array
(
[*miska*] => Array
(
[docs] => 0
[hits] => 0
)
[miska] => Array
(
[docs] => 0
[hits] => 0
)
)
usb prenosnik (1/1)
Array
(
[*usb*] => Array
(
[docs] => 1
[hits] => 1
)
[usb] => Array
(
[docs] => 1
[hits] => 1
)
[*prenosnik*] => Array
(
[docs] => 1
[hits] => 1
)
[prenosnik] => Array
(
[docs] => 1
[hits] => 1
)
)
prenosnik miska (0/0)
Array
(
[*prenosnik*] => Array
(
[docs] => 1
[hits] => 1
)
[prenosnik] => Array
(
[docs] => 1
[hits] => 1
)
[*miska*] => Array
(
[docs] => 0
[hits] => 0
)
[miska] => Array
(
[docs] => 0
[hits] => 0
)
)
miška usb (0/0)
Array
(
[*miška*] => Array
(
[docs] => 0
[hits] => 0
)
[miška] => Array
(
[docs] => 0
[hits] => 0
)
[*usb*] => Array
(
[docs] => 1
[hits] => 1
)
[usb] => Array
(
[docs] => 1
[hits] => 1
)
)
私は明確に結果が得られるのは明らかですスロベニア語特殊文字
してくださいなしのESは、私がこの
はい、私は...何の違い –
OMGしません!やったよ! [ここで答えを見つけ] [1] [1]:http://ryaneby.com/2009/11/21/unicode-and-sphinx.html 私は sql_query_pre = SETを追加する必要がCHARACTER_SET_RESULTS = utf8 sql_query_pre = SET NAMES utf8 私のソース定義に...明らかに、DBはデフォルトでトラフutf8に接続していませんでした! WOOO HOOOO –
私はそれを許さないでしょう:S 100の評判が必要です... あなた自身で投稿してください、私は確認します –