PDA

View Full Version : سوال: مشکل با جستجوی Fulltext کلمات فارسی



mbf5923
جمعه 14 بهمن 1390, 21:26 عصر
سلام
2تا سوال:
اولیش همون جستجوی فول تکست هستش که کلمه فارسی رو که جستجو میزنم چیزی برنمیگردونه
جالبش اینه وقتی دستور رو توی PHPMYADMIN اجرا میکنم درست جواب میده ولی توی اسکریپت نه!
کدش هم اینه:

$Search='تست';
$sql = ("SELECT * from TableName WHERE FieldName LIKE \"%$Search%\"");
سوال دوم در مورد انجین های MYSQL هستش از کدوم بهتره استفاده کنیم؟
سپاسگزارم

mohsen24000
جمعه 14 بهمن 1390, 22:55 عصر
من کد شما را بر روی هاست تست کردم و مشکلی نیست و فول تکست سرچ به خوبی اجرا میشه...!
Collation فیلدی که فول تکست سرچ انجام میدید چیه!؟ utf8_persian_ci

tux-world
شنبه 15 بهمن 1390, 00:35 صبح
اینو تست کن:
$sql = ("SELECT * from TableName WHERE FieldName LIKE \"%'".$Search."'%\");
یه راهنمایی کلی. برای اینکه بدونی دستور اسکیوالی که نوشتی درسته یا نه خود phpmyadmin گزینه ای داره که کد php دستورات و اکشنهایی که ایجاد میکنه رو برات تولید میکنه

mbf5923
شنبه 15 بهمن 1390, 18:22 عصر
این کدی که گذاشتم توی زبان لاتین خوب جواب میده ولی زبان های یونیکد رو جواب نمیده

Collation فیلدی که فول تکست سرچ انجام میدید چیه
بله Persian_ci هستش
سوال دوم رو کسی تحقیقی نکرده در موردش؟

MMSHFE
شنبه 15 بهمن 1390, 18:30 عصر
معمولاً InnoDB امکانات جدیدتر و بیشتری داره ولی MyISAM سریعتره. Memory از همه سریعتره ولی اگه سرور Restart بشه همه چی پَر!!! بهتره برای کارهای موقت از Memory استفاده کنید. یعنی یک جدول موقت بسازید و اطلاعات رو توش بریزین و پردازشها رو اونجا انجام بدین و نهایتاً اون رو Drop کنید. البته برای پردازشهای سنگین این روش خوبه چون در تعداد رکوردهای پایین، خود ایجاد و حذف جدول باعث ایجاد بار اضافه روی سرور میشه.
برای جستجوی Full Text هم چرا از MATCH...AGAINST (http://dev.mysql.com/doc/refman/5.0/en/fulltext-search.html) استفاده نمیکنید؟

mbf5923
شنبه 15 بهمن 1390, 18:46 عصر
از جوابتون متشکرم

رای جستجوی Full Text هم چرا از MATCH...AGAINST استفاده نمیکنید؟
آخه ازش نتونستم استفاده کنم وقتی میخوام اطلاعات برگردونده شده رو بخونم با خطا مواجه میشه!

$sql = ("SELECT MATCH('FieldName') AGAINST ('MyText') as Relevance FROM TableName WHERE MATCH
('FieldName') AGAINST('+MyWord' IN
BOOLEAN MODE)");
$result = mysql_query($sql);
if (mysql_num_rows($result) == 0)
شرط نتیجه True برمیگردونه و اسکریپت متوقف میشه!

MMSHFE
شنبه 15 بهمن 1390, 18:50 عصر
از حالت Natural Language Full Text (http://dev.mysql.com/doc/refman/5.0/en/fulltext-natural-language.html) استفاده کنید.

mbf5923
شنبه 15 بهمن 1390, 19:05 عصر
آقا من شرمند هام ولی تمام این روش ها رو چک کردم توی PHPmyadmin جواب میده ولی توی اسکریپت که میارم چیزی برنمیگردونه
امکان داره یک مثال بزنید؟

MMSHFE
شنبه 15 بهمن 1390, 19:09 عصر
چند تا سؤال؟ charset صفحه UTF-8 هست؟ صفحه با کدگذاری UTF-8 without BOM ذخیره شده؟ قبل از اجرای Query خودتون، 'SET NAMES 'utf8 رو اجرا میکنید؟

mbf5923
شنبه 15 بهمن 1390, 19:19 عصر
بله همه موارد رو رعایت کردم ولی عجیبه چرا جواب نمیده!!

mbf5923
شنبه 15 بهمن 1390, 19:32 عصر
مشکلش رو فهمیدم
توی اسکریپت من وقتی یه کلمه مینویسم با اون کلمه که در دیتابیس ذخیره شده ظاهرا تفاوت داره!!!
وقتی از دیتابیس کپی میکنم و میارم توی اسکریپت مشکلی نیست ولی اگه خودم بنویسم پیداش نمیکنه!!!

fateme65
چهارشنبه 22 مرداد 1393, 09:44 صبح
باید توی event keypress درستش کنی