поиск thinking-sphinx и русский/украинский языки

480 views
Skip to first unread message

Igor K.

unread,
Aug 17, 2009, 4:50:22 AM8/17/09
to RubyOnRails to russian
Привет

Есть вопрос - как заставить thinking-sphinx искать по русским и
украинским словам?
Мой конфиг -
development: &my_settings
enable_star: true
min_prefix_len: 0
min_infix_len: 1
min_word_len: 1
charset_type: utf-8
morphology: stem_en
test:
<<: *my_settings
production:
<<: *my_settings

Например когда ищу "joh*" - находит запись john
А вот когда ищу "Тов*" - ненаходит "Товары".

Делал простой скафолд + в методе index внес изменения @authors =
Author.search params[:search] так что я передаю строчку поиска через
запрос в браузере

Спасибо!!

Yaroslav Markin

unread,
Aug 17, 2009, 5:29:58 AM8/17/09
to ror...@googlegroups.com
morphology: "stem_enru"


2009/8/17 Igor K. <igorkas...@gmail.com>

Привет

Есть вопрос - как заставить thinking-sphinx искать по русским и
украинским словам?

--
Yaroslav

labria

unread,
Aug 17, 2009, 8:31:56 AM8/17/09
to RubyOnRails to russian
А не stem_ru?

On Aug 17, 12:29 pm, Yaroslav Markin <yaros...@markin.net> wrote:
> morphology: "stem_enru"
>

> 2009/8/17 Igor K. <igorkasyanc...@gmail.com>

Alexey Kovyrin

unread,
Aug 17, 2009, 9:36:03 AM8/17/09
to ror...@googlegroups.com
Насколько я понимаю, стемминг тут не причем. Я бы скорее копнул в
сторону кодировки контента в базе, кодировки соединения с базой в
сфинксе и кодировки, в которой вы посылаете запрос сфинксу. А, ну и
кодировку текста в сфинксе тоже (sbcs или utf8).

Если кодировки одинаковые везде, а оно таки не находится, я бы глянул,
включен ли вообще режим поиска по звездочкам (enable_star вроде бы).

P.S. Очевидно, все данные советы никакого отношения к thinking sphinx не имеют.

2009/8/17 Yaroslav Markin <yaro...@markin.net>:

--
Alexey Kovyrin
http://kovyrin.net/

Igor K.

unread,
Aug 17, 2009, 5:35:44 PM8/17/09
to RubyOnRails to russian
Дело в том что мне кажется везьде utf8. например конфиг базы(+создавал
через рейк таск) -
development:
adapter: mysql
encoding: utf8
reconnect: false
database: list1
pool: 5
username: root
password: root
socket: /var/run/mysqld/mysqld.sock

Конфиг сфинкса (задан utf8) -


development: &my_settings
enable_star: true
min_prefix_len: 0
min_infix_len: 1
min_word_len: 1
charset_type: utf-8

morphology: stem_ru
charset_table: "0..9, a..z, _, @, A..Z->a..z, U+410..U+42F->U+430..U
+44F, U+430..U+44F"
test:
<<: *my_settings
production:
<<: *my_settings

(пробовал менять, забирать строчки где morphology и charset_table, но
не помогло)
и поиск по звездочкам тоже включен, дело в тому что оно вообще не ищет
русские/украинские слова ((( даже не знаю в чем тут дело

если кому-то будет интересен проект - то он здесь http://drop.io/thinkingsphinx1

Спасибо за ответы!
Игорь

On Aug 17, 4:36 pm, Alexey Kovyrin <ale...@kovyrin.net> wrote:
> Насколько я понимаю, стемминг тут не причем. Я бы скорее копнул в
> сторону кодировки контента в базе, кодировки соединения с базой в
> сфинксе и кодировки, в которой вы посылаете запрос сфинксу. А, ну и
> кодировку текста в сфинксе тоже (sbcs или utf8).
>
> Если кодировки одинаковые везде, а оно таки не находится, я бы глянул,
> включен ли вообще режим поиска по звездочкам (enable_star вроде бы).
>
> P.S. Очевидно, все данные советы никакого отношения к thinking sphinx не имеют.
>

> 2009/8/17 Yaroslav Markin <yaros...@markin.net>:
>
> > morphology: "stem_enru"
>
> > 2009/8/17 Igor K. <igorkasyanc...@gmail.com>

Igor K.

unread,
Aug 17, 2009, 5:48:05 PM8/17/09
to RubyOnRails to russian
+ ищу через УРЛ http://192.168.145.131:3000/authors?search=%D2%EE%E2%E0%F0%E8*

> если кому-то будет интересен проект - то он здесьhttp://drop.io/thinkingsphinx1

Alexey Kovyrin

unread,
Aug 17, 2009, 5:51:14 PM8/17/09
to ror...@googlegroups.com
А если, чтобы локализовать проблему, взять и дернуть сфинкс из их
пхп-шного клиента (который test.php или как-то так рядом с api лежит)?
Если там все покажет, значит баг выше, если нет, значит искать его
ниже.

p.s. покажите плиз сгенеренный конфиг сфинкса, у меня есть идея тут :-)

2009/8/17 Igor K. <igorkas...@gmail.com>:

--
Alexey Kovyrin
http://kovyrin.net/

Igor K.

unread,
Aug 18, 2009, 3:12:48 AM8/18/09
to RubyOnRails to russian
Вот пожалуйста конфиг RAILS_ROOT/config/development.sphinx.conf

indexer
{
}

searchd
{
address = 127.0.0.1
port = 3312
log = /root/list1/log/searchd.log
query_log = /root/list1/log/searchd.query.log
pid_file = /root/list1/log/searchd.development.pid
}

source author_core_0
{
type = mysql
sql_host = localhost
sql_user = root
sql_pass = root
sql_db = list1
sql_sock = /var/run/mysqld/mysqld.sock
sql_query_pre = SET NAMES utf8
sql_query = SELECT `authors`.`id` * 1 + 0 AS `id` , CAST
(`authors`.`name` AS CHAR) AS `name`, CAST(`authors`.`aboutme` AS
CHAR) AS `aboutme`, CAST(CONCAT_WS(' ', `authors`.`name`,
`authors`.`aboutme`) AS CHAR) AS `aaa`, `authors`.`id` AS
`sphinx_internal_id`, 3120815614 AS `class_crc`, '3120815614' AS
`subclass_crcs`, 0 AS `sphinx_deleted`, IFNULL(`authors`.`name`, '')
AS `name_sort`, UNIX_TIMESTAMP(`authors`.`created_at`) AS `created_at`
FROM `authors` WHERE `authors`.`id` >= $start AND `authors`.`id` <=
$end GROUP BY `authors`.`id` ORDER BY NULL
sql_query_range = SELECT IFNULL(MIN(`id`), 1), IFNULL(MAX(`id`), 1)
FROM `authors`
sql_attr_uint = sphinx_internal_id
sql_attr_uint = class_crc
sql_attr_uint = sphinx_deleted
sql_attr_timestamp = created_at
sql_attr_str2ordinal = name_sort
sql_attr_multi = uint subclass_crcs from field
sql_query_info = SELECT * FROM `authors` WHERE `id` = (($id - 0) /
1)
}

index author_core
{
source = author_core_0
path = /root/list1/db/sphinx/development/author_core
min_word_len = 1
charset_type = utf-8
min_prefix_len = 0
min_infix_len = 1
enable_star = 1
}

index author
{
type = distributed
local = author_core
}

On Aug 18, 12:51 am, Alexey Kovyrin <ale...@kovyrin.net> wrote:
> А если, чтобы локализовать проблему, взять и дернуть сфинкс из их
> пхп-шного клиента (который test.php или как-то так рядом с api лежит)?
> Если там все покажет, значит баг выше, если нет, значит искать его
> ниже.
>
> p.s. покажите плиз сгенеренный конфиг сфинкса, у меня есть идея тут :-)
>

> 2009/8/17 Igor K. <igorkasyanc...@gmail.com>:

> > если кому-то будет интересен проект - то он здесьhttp://drop.io/thinkingsphinx1

Igor K.

unread,
Aug 19, 2009, 3:04:38 AM8/19/09
to RubyOnRails to russian
все ОК
все заработало, и кстати работало раньше ))) просто я задавал строку
для поиска через УРЛ браузера (а он кодировал запрос, хотя в логах все
было нормально) ..... а я взял и добавил простую форму и все
заработало )))

Кстати насчет морфологии - такая есть morphology: "stem_enru" ? А то
что-то я не нашел упоминания про это?

Igor K.

unread,
Aug 19, 2009, 3:39:23 AM8/19/09
to RubyOnRails to russian
Вопрос 2 - а как сделать подсветку найденных найденных слов в
названиях после поиска? Возможно ли это делать с помощью sphinx/
thinking sphinx или же оно делается с помощью js? может есть примеры
или готовый решения? Спасибо

Max Lapshin

unread,
Aug 19, 2009, 3:41:38 AM8/19/09
to ror...@googlegroups.com
2009/8/19 Igor K. <igorkas...@gmail.com>:

Я делал патч к thinking sphinx для excerpt-а, но автор его не принял и
правильно сделал: оно почему-то глючило.
Разбираться почему, я не стал — не было нужно.

Igor K.

unread,
Aug 19, 2009, 4:35:48 AM8/19/09
to RubyOnRails to russian
я нашел слайды по сфинксу - http://www.slideshare.net/freelancing_god/sphinx-beyond-the-basics
(слайд 43 и дальше) по excerpt-ам, так там есть пример кода и код есть
в плагине но он не работает(не подсвечивает). И даже тут смотрел
http://freelancing-god.github.com/ts/en/excerpts.html но тот код не
работает (((

кто-то еще занимался сфинксом (и thinking sphinx)?

спасибо

On Aug 19, 10:41 am, Max Lapshin <max.laps...@gmail.com> wrote:
> 2009/8/19 Igor K. <igorkasyanc...@gmail.com>:

> Разбираться почему, я не стал -- не было нужно.

Igor K.

unread,
Aug 19, 2009, 4:53:42 AM8/19/09
to RubyOnRails to russian
снова я поспешил )) подсветка работает, но если ввести слово полностью
я раньше вводил "joh*" (а базе была запись john) и подсветки не было,
а когда ввел john то слово выделилось ))) а я надеялся что оно
подсветит "joh" когда я искал "joh*"

А вообще такое возможно (подсветить часть слова что совпала)??
Спасибо

On Aug 19, 11:35 am, "Igor K." <igorkasyanc...@gmail.com> wrote:
> я нашел слайды по сфинксу -http://www.slideshare.net/freelancing_god/sphinx-beyond-the-basics


> (слайд 43 и дальше) по excerpt-ам, так там есть пример кода и код есть

> в плагине но он не работает(не подсвечивает). И даже тут смотрелhttp://freelancing-god.github.com/ts/en/excerpts.htmlно тот код не

Yaroslav Markin

unread,
Aug 19, 2009, 6:00:41 AM8/19/09
to ror...@googlegroups.com


2009/8/19 Igor K. <igorkas...@gmail.com>

Кстати насчет морфологии - такая есть morphology: "stem_enru"  ? А то
что-то я не нашел упоминания про это?


--
Yaroslav

Reply all
Reply to author
Forward
0 new messages