powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird и Sphinx
25 сообщений из 130, страница 5 из 6
Firebird и Sphinx
    #39215129
Георгий___Ш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет всем.
Использую сборку sphinx-2.0.3.Firebird.x32 и очень доволен, всё работает как по маслу. Как и через SphinxQL так и через API.
На днях решил обновится на 2.2.10.x64, всё вроде работает, но кириллицу искать не хочет (чезез SphinxQL и API).
Двухдневные танцы с бубнами не помогли. Пробовал всякие вариации с кодировками, параметрами, перезагрузками, и др. которые помогают в MySQL(как источнике),
Пробовал менять стринги колонок с WIN1251 на UTF8 в БД - результаты нулевые.
Короче откатился на 2.0.3. :`(

Если у кого работает рус.поиск, на этих сборках(FB.2.2.9.x64, FB.2.2.10.x64), может поделитесь секретом что подкрутить?
...
Рейтинг: 0 / 0
Firebird и Sphinx
    #39215244
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конфиг Sphinx-а такой:
Код: sql
1.
2.
3.
4.
5.
6.
7.
	type				= firebird
	sql_host			= 192.168.1.25
	sql_db				= 192.168.1.25:FIAS
	sql_user			= FIAS
	sql_pass			= *****
	sql_role			= READER
	sql_charset			= UTF8



Полет нормальный. Все ищет.
...
Рейтинг: 0 / 0
Firebird и Sphinx
    #39216162
Георгий___Ш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Avenger__,

А у вас сама база UTF-8 ? Я так полагаю...

У меня WIN1251 и по видимому получается что если
sql_charset = WIN1251 , то по русски не ищется
а если sql_charset = UTF8 то он "кракозябры" загружает, и по ним не индексирует, ну и соответственно по русски тоже нет, т.к. там еже ничего нет русского.

Походу дела базу придётся с нуля UTF8 создавать, а иначе ни как ((
...
Рейтинг: 0 / 0
Firebird и Sphinx
    #39216279
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Георгий___Ш__Avenger__,

А у вас сама база UTF-8 ? Я так полагаю...

У меня WIN1251 и по видимому получается что если
sql_charset = WIN1251 , то по русски не ищется
а если sql_charset = UTF8 то он "кракозябры" загружает, и по ним не индексирует, ну и соответственно по русски тоже нет, т.к. там еже ничего нет русского.

Походу дела базу придётся с нуля UTF8 создавать, а иначе ни как ((

База в WIN1251.
...
Рейтинг: 0 / 0
Firebird и Sphinx
    #39216372
Георгий___Ш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Avenger__,

Странно, по идеи одинаково, но у меня в этом положении кракозябры грузятся..
А FB сервер у вас какой версии и разрядность, и клинская fbclient.dll (при sphinx) какой версии и разрядности?
...
Рейтинг: 0 / 0
Firebird и Sphinx
    #39216482
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Георгий___Ш__Avenger__,

Странно, по идеи одинаково, но у меня в этом положении кракозябры грузятся..
А FB сервер у вас какой версии и разрядность, и клинская fbclient.dll (при sphinx) какой версии и разрядности?

FB 2.5 x64, Sphinx client - x32.

А где вы видите кракозябры?
...
Рейтинг: 0 / 0
Firebird и Sphinx
    #39216591
Георгий___Ш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Avenger__Георгий___Ш__Avenger__,

Странно, по идеи одинаково, но у меня в этом положении кракозябры грузятся..
А FB сервер у вас какой версии и разрядность, и клинская fbclient.dll (при sphinx) какой версии и разрядности?

FB 2.5 x64, Sphinx client - x32.

А где вы видите кракозябры?

В результатах поиска
если ввести анг.фразу он найдёт, и если в этом же стринге и кириллица она заменена кракозябрами, т.е он (Sphinx) их уже там хранит так.

Побывал "прводить к типу"
select ID, zagolovok as title, ...
Заменить yf
select ID, zagolovok collate UTF8 as title, ...

Но уже FB ругается: COLLATION UTF8 for CHARACTER SET WIN1251 is not defined.
...
Рейтинг: 0 / 0
Firebird и Sphinx
    #39216601
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Георгий___Ш__Avenger__пропущено...


FB 2.5 x64, Sphinx client - x32.

А где вы видите кракозябры?

В результатах поиска
если ввести анг.фразу он найдёт, и если в этом же стринге и кириллица она заменена кракозябрами, т.е он (Sphinx) их уже там хранит так.

Побывал "прводить к типу"
select ID, zagolovok as title, ...
Заменить yf
select ID, zagolovok collate UTF8 as title, ...

Но уже FB ругается: COLLATION UTF8 for CHARACTER SET WIN1251 is not defined.

Sphinx результат в firebird не возвращает. Он возвращает только идентификаторы документов, и аттрибуты, которые прописаны в конфигурации сфинкса. У Вас прописан в сфинксе аттрибут (поле), в котором содержаться русские символы? Как вы эти символы в запрос на firebirde передаете?
...
Рейтинг: 0 / 0
Firebird и Sphinx
    #39216620
Георгий___Ш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot __Avenger__]Георгий___Шпропущено...


Sphinx результат в firebird не возвращает. Он возвращает только идентификаторы документов, и аттрибуты, которые прописаны в конфигурации сфинкса. У Вас прописан в сфинксе аттрибут (поле), в котором содержаться русские символы? Как вы эти символы в запрос на firebirde передаете?


Вы меня не правильно поняли, В результатах запроса SphinxQL и SphinxAPI. и там не только ID но и стока тоже. Фактически там "копия" таблицы дежит и я её через SphinxQL селекчу (соответственно при подключении через libmySQL.dll я указываю кодировку Utf8).
...
Рейтинг: 0 / 0
Firebird и Sphinx
    #39216623
Георгий___Ш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
> У Вас прописан в сфинксе аттрибут (поле), в котором содержаться русские символы?

Да, Да, естественно я их все прописал..
...
Рейтинг: 0 / 0
Firebird и Sphinx
    #39216625
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Георгий___Ш]__Avenger__пропущено...



Вы меня не правильно поняли, В результатах запроса SphinxQL и SphinxAPI. и там не только ID но и стока тоже. Фактически там "копия" таблицы дежит и я её через SphinxQL селекчу (соответственно при подключении через libmySQL.dll я указываю кодировку Utf8).

Понятно
...
Рейтинг: 0 / 0
Firebird и Sphinx
    #39216628
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробуй любым mysql манагером на результат посмотреть. У меня все корректно отображает.
...
Рейтинг: 0 / 0
Firebird и Sphinx
    #39216660
Георгий___Ш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Avenger__Попробуй любым mysql манагером на результат посмотреть. У меня все корректно отображает.

Короче, поставил HeidiSQL (хорошая программа), работает ))
Пипец.... мой косяк
Мои клиенты не работают )) через DBX - D2007, хотя я им указываю UTF8

Avenger я вам сильно, сильно благодарен. Спасибо.
...
Рейтинг: 0 / 0
Firebird и Sphinx
    #39216674
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Георгий___ШМои клиенты не работают )) через DBX - D2007, хотя я им указываю UTF8
гм, какой еще uft8 в D2007? там юникода нет, только спец-компоненты, и прочее, так что не будет это работать без дополнительного кодирования. (и dbx там тоже неюникодный).
Для юникода надо D2009 и выше.

http://www.ibase.ru/unicode_faq/

в данном случае ты можешь разве что
- сделать базу в utf8
- коннект к ней делать с чарсетом win1251
но это будет половинчатое решение

Насчет dbx с юникодом - см. соответствующий пункт в faq про разницу в поддержке utf8 в ИБ и ФБ. если dbx прямо для firebird 2.0 - тогда оно будет с юникодом работать (опять же, в дельфи 2009 и выше). Если dbx для ИБ, тогда не будет.
...
Рейтинг: 0 / 0
Firebird и Sphinx
    #39216726
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvГеоргий___ШМои клиенты не работают )) через DBX - D2007, хотя я им указываю UTF8
гм, какой еще uft8 в D2007? там юникода нет, только спец-компоненты, и прочее, так что не будет это работать без дополнительного кодирования. (и dbx там тоже неюникодный).
Для юникода надо D2009 и выше.

http://www.ibase.ru/unicode_faq/

в данном случае ты можешь разве что
- сделать базу в utf8
- коннект к ней делать с чарсетом win1251
но это будет половинчатое решение

Насчет dbx с юникодом - см. соответствующий пункт в faq про разницу в поддержке utf8 в ИБ и ФБ. если dbx прямо для firebird 2.0 - тогда оно будет с юникодом работать (опять же, в дельфи 2009 и выше). Если dbx для ИБ, тогда не будет.

База без разницы в каком чарсете. Коннект из сфинкса в UTF8. SphinxQL возвращает данные в UTF8.
...
Рейтинг: 0 / 0
Firebird и Sphinx
    #39216730
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Он через DBХ коннектится к MySQL(SphinxQL), который по умолчанию возвращает данные в UTF8.
...
Рейтинг: 0 / 0
Firebird и Sphinx
    #39216735
Георгий___Ш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kdvГеоргий___ШМои клиенты не работают )) через DBX - D2007, хотя я им указываю UTF8
гм, какой еще uft8 в D2007? там юникода нет, только спец-компоненты, и прочее, так что не будет это работать без дополнительного кодирования. (и dbx там тоже неюникодный).
Для юникода надо D2009 и выше.

http://www.ibase.ru/unicode_faq/

в данном случае ты можешь разве что
- сделать базу в utf8
- коннект к ней делать с чарсетом win1251
но это будет половинчатое решение

Насчет dbx с юникодом - см. соответствующий пункт в faq про разницу в поддержке utf8 в ИБ и ФБ. если dbx прямо для firebird 2.0 - тогда оно будет с юникодом работать (опять же, в дельфи 2009 и выше). Если dbx для ИБ, тогда не будет.

Дмитрий, добрый день.

>> http://www.ibase.ru/unicode_faq/
Да эту штуку я уже читал.

>>в данном случае ты можешь разве что - сделать базу в utf8..
Тут то проблема не с FB и Sphinx for FB,
с обращением к FB проблем нет, а Sphinx for FB разницы нет какая у вас BD.fb юникод или одно байтовая анси, всё глотает

Проблема обращения к SphinxQL, а там псевдо MySQL-ный протокол, который сейчас стал только юникодовый.
И например FireDAC-ком, там не подсоединиться, то ему версия не та, то кавычки не нравятся (которые FireDAC сам доставляет).
И поэтому я выбрал DBX - однонабравленый и без всяких рюречек...
Ну да придётся эту часть на XE перекомпилировать, или что нибудь найти D2007 чтобы с MySQL utf8 мог связаться.
...
Рейтинг: 0 / 0
Firebird и Sphinx
    #39216768
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Георгий___ШПроблема обращения к SphinxQL, а там псевдо MySQL
то есть, вопрос вообще никакого отношения к Firebird не имеет, но почему-то задается в этом разделе :-)

в любом случае. даже, если dbx-драйвер для MySQL из Delphi 2007 умеет работать с юникодом (что сомнительно), то Дельфи 2007 умеет работать с юникодом только при помощи дополнительных юникодных компонент и функций.
Так что, ситуация тут абсолютно та же самая, что и с ФБ - для нормальной работы с юникодом надо Дельфи 2009 и выше, и комплектный драйвер DBX (если уж он уже используется).

Впрочем, я легко нашел, что люди якобы работают и так
https://habrahabr.ru/sandbox/16068/
...
Рейтинг: 0 / 0
Firebird и Sphinx
    #39226263
Георгий___Ш
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
>> Впрочем, я легко нашел, что люди якобы работают и так
https://habrahabr.ru/sandbox/16068/

Дмитрий, спасибо, ссылка оказалась полезной для меня
...
Рейтинг: 0 / 0
Firebird и Sphinx
    #39243069
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Firebird.SphinxClient

Библиотека позволяет делать запросы к Sphinx из PL/SQL Firebird. Библиотека поставляется в двух вариантах UDF (Firebird 2.5/3.0) и UDR (Firebird 3.0)
Настройка UDF

Необходимо в каталог UDF сервера Firebird скопировать два файла udf_SphinxClient.dll и udf_SphinxClient.ini
Произвести первичную настройку в файле udf_SphinxClient.ini, где указать адрес и порт Sphinx сервера, библиотеку доступа к SphinxQL.
Пролить в базу файл udf_SphinxClient.sql

Пример использование UDF

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
EXECUTE BLOCK RETURNS (
  PARSER_ID INTEGER,
  MODULE_ID INTEGER, 
  ROW_ID    VARCHAR(128) CHARACTER SET OCTETS
)
AS
DECLARE VARIABLE SQL_TEXT VARCHAR(8000);
BEGIN
  SQL_TEXT =
    'SELECT MODULE_ID, ROW_ID FROM Cashs2_Operations ' ||
    'WHERE MATCH(''иванов иван владимирович'')' ||
    '  AND TDATE BETWEEN 42000 AND 50000';
  PARSER_ID = SPHINXCLIENT$CREATE();
  IF (SPHINXCLIENT$EXEC_SQL(PARSER_ID, SQL_TEXT) = 1) THEN
  BEGIN
    WHILE (SPHINXCLIENT$EOF(PARSER_ID) = 1) DO
    BEGIN
      MODULE_ID = SPHINXCLIENT$CURRENT_VALUE(PARSER_ID, 0);
      ROW_ID    = SPHINXCLIENT$CURRENT_VALUE(PARSER_ID, 1);
      SUSPEND;
      SPHINXCLIENT$NEXT(PARSER_ID);
    END
  END
  SPHINXCLIENT$FREE(PARSER_ID);
END



Настройка UDF

Необходимо в каталог UDF сервера Firebird скопировать два файла udr_SphinxClient.dll и udr_SphinxClient.ini
Произвести первичную настройку в файле udr_SphinxClient.ini, где указать адрес и порт Sphinx сервера, библиотеку доступа к SphinxQL.
Пролить в базу файл udr_SphinxClient.sql

Пример использование UDR

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
EXECUTE BLOCK RETURNS (
  MODULE_ID INTEGER, 
  ROW_ID    VARCHAR(128) CHARACTER SET OCTETS
)
AS
DECLARE VARIABLE SQL_TEXT VARCHAR(8000);
BEGIN
  SQL_TEXT =
    'SELECT MODULE_ID, ROW_ID FROM Cashs2_Operations ' ||
    'WHERE MATCH(''иванов иван владимирович'')' ||
    '  AND TDATE BETWEEN 42000 AND 50000';
  FOR
    SELECT MODULE_ID, ROW_ID
    FROM SPHINXSEARCH$EXECUTE(:SQL_TEXT)
    INTO :MODULE_ID, :ROW_ID
  DO
  BEGIN
    SUSPEND;
  END
END



https://github.com/avengermsoft/Firebird.SphinxClient
...
Рейтинг: 0 / 0
Firebird и Sphinx
    #39297559
Arsen B.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго времени суток.
Решил всё таки попробовать Sphinx, что такое, да с чем едят.
Скачал sphinx-2.2.11-release-win64-firebird, заменил все файлы в оригинальном дистрибутиве Sphinx sphinx-2.2.11-release-win64
Настроил под БД, работающую на Firebird 2.5.2.26540, всё ок, запросы выполняются, но почему-то не происходит поиск по запросам, содержащим кириллицу. Кодировка полей БД - WIN1251. Запросы пробую производить через Navicat for MySQL (удачно проходят только запросы на поиск цифр), HeidiSQL выдает в результатах символы "�" Что мог сделать не так, куда копать?
Конфигурация Sphinx
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
#
# Minimal Sphinx configuration sample (clean, simple, functional)
#

source src1
{
	type			= firebird

	sql_host		= x.x.x.x
	sql_user		= DBUSER
	sql_pass		= DBPASSWORD
	sql_db			= x.x.x.x:testdb
	# sql_port		= 3050	# optional, default is 3306

	sql_query		= select spr_streets.id, spr_city.name as city_name, spr_streets.name as street_name from spr_city, spr_streets where spr_streets.spr_city_id=spr_city.id
	
#	sql_attr_uint = id
	sql_field_string = city_name
	sql_field_string = street_name
	sql_charset = WIN1251
}


index test1
{
	source			= src1
	path			= D:\Sphinx\data\test1
	docinfo			= extern
	morphology		= stem_enru, soundex
	enable_star		= 1
	min_word_len 	= 1		
}

indexer
{
	mem_limit		= 128M
}


searchd
{
	listen			= 9312
	listen			= 9306:mysql41
	log			= D:\Sphinx\log\searchd.log
	query_log		= D:\Sphinx\log\query.log
	read_timeout		= 5
	max_children		= 30
	pid_file		= D:\Sphinx\log\searchd.pid
	seamless_rotate		= 1
	preopen_indexes		= 1
	unlink_old		= 1
	workers			= threads # for RT to work
	binlog_path		= D:\Sphinx\data
}



Примеры Запросов

...
Рейтинг: 0 / 0
Firebird и Sphinx
    #39297640
__Avenger__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arsen B.source src1
{
sql_charset = UTF8
}



Sphinx - целиком и полностью только utf-8. И к sphinxql коннект только utf-8. Проблема в кодировке.
...
Рейтинг: 0 / 0
Firebird и Sphinx
    #39297713
Arsen B.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
__Avenger__,
Премного благодарен, теперь все ищется.
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Firebird и Sphinx
    #39555515
__Mikle__
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прошу прощения за некропостинг.

Кто нибудь знает, будет ли работать sphinx-2.2.11-release-win64-firebird с Embedded сервером Firebird?
У меня не запускается Indexer.exe - вываливается с ошибкой:
---------------------------
indexer.exe - Ошибка приложения
---------------------------
Ошибка при запуске приложения (0xc000007b). Для выхода из приложения нажмите кнопку "ОК".

fbclient.dll - переименованный fbembed.dll версии 2.5.5.26952
...
Рейтинг: 0 / 0
Firebird и Sphinx
    #39555531
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
__Mikle__,

Firebird embedded - какой разрядности ?
...
Рейтинг: 0 / 0
25 сообщений из 130, страница 5 из 6
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird и Sphinx
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]