Sphinx-Suche: charset table Schwierigkeiten
Ich bin zu verlieren mein Geist auf diese zwei Tage jetzt...
Möchte ich die slowenischen Buchstaben in sphinx-Suche, die alle englische + č ž š (und nur im Falle ć)
Ich suchte alle über das Netz, um die richtige chars, aber ich fand hocken...
also habe ich beschlossen, meine eigene Schritt für Schritt...
dies ist meine index
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
}
wo ich gemappt großen Č, Ć Š Ž um Ihre Kleinbuchstaben Kollegen, und fügte hinzu, Zuordnung von
č in c, ć c, š in s und ž in die z
und schließlich fügte ich diese vier chars auf dem Tisch....
diese sind meine Kleinanzeigen Titel:
t1: HP USB optična miška za prenosnik RH304
t2: Čiška PCplus MO-U033+F2 (optična, brezžična, PS/2)
t3: Miška Logitech optična Nano M235 siva
db-Kodierung: utf8_general_ci
Tabelle-Kodierung: utf8_general_ci
Titel-Feld-Kodierung: utf8_general_ci
test-Fall:
$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));
- und schließlich der test-Ergebnisse:
Schlagwort (Gesamt /total_found)
Worte
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
)
)
Kann man deutlich sehen, bekomme ich positive Ergebnisse nur in den Abfragen ohne die slowenischen Sonderzeichen
Bitte, bitte helfen, ich bin zu verlieren mein Geist auf dieser
- ja, Mach ich keine Unterschiede..
- OMG!!! Ich habe es getan! [Die Antwort gefunden hier][1] [1]: ryaneby.com/2009/11/21/unicode-and-sphinx.html ich brauchte, um hinzuzufügen sql_query_pre = SET CHARACTER_SET_RESULTS=utf8 sql_query_pre = SET NAMES utf8 zu meiner Quelle definition... klar, die DB ist nicht mit Trog utf8 standardmäßig! WOOO HOOOO
- Ich würde, aber es lässt mich nicht :S 100 Ruf benötigt... bitte postet es selbst, I;ll bestätigen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist, dass sphinx indexer nicht mit utf8-Zeichensatz standardmäßig. Behoben, indem die folgenden sphinx.conf
Referenzen
Hier könnten Sie finden viele verschiedene Zeichensatz-Tabellen, vielleicht einer der geeignet wäre, für Ihre Sprache: http://sphinxsearch.com/wiki/doku.php?id=charset_tables
Gibt es einige Parameter, die Sie sollten setup. Sie sind ngram_len und ngram_chars.
Erste, ich hab das gleiche problem mit Ihnen. Dann Las ich das Buch Einführung in die Suche mit sphinx , fand ich die default charset und ngram_chars ist für Englisch und Russisch nur. So müssen Sie diese selbst.
In meinem Fall habe ich diese changs, für Chinesen: