PDA

View Full Version : سوال: موتور جستجو در My Sql برای متون فارسی



dani777
سه شنبه 26 آذر 1387, 16:29 عصر
با سلام خدمت دوستان عزیز
من میخوام یه موتور جستجو برای سایتم درست کنم که کلمه مورد نظر کاربرسایت رو در دیتابیسم (فیلد مورد نظرم از نوع TEXT هست و متن آن فارسی میباشد) پیدا کنه و اطلاعات کامل رکورد مربوط به اون رو نمایش بده
ممنون میشم کمکم کنید بد جوری گیر کردم مخصوصا با متون فارسی

as13851365
چهارشنبه 27 آذر 1387, 11:13 صبح
شما کجای کار مشکل دارید
1 دریافت اطلاعات کاربر
2 نحویه جستجو کردن در دیتابیس
3 نحویه نمایش دادهها
.
.
.

fmehdi
چهارشنبه 27 آذر 1387, 16:16 عصر
فک می کنم مشکل دوسمون مشکل منم باشه و در واقع همون گزینه 2 شما @!
ببینید من برای سرچ تو کوئریم از LIKE استفاده می کنم و برای اینگلیسی و اعداد حتی اگه یه حرف رو سرچ کنم جوال میده ..
اما برای فارسی جواب نمیده ...
لازم به ذکره که وقت ارسال اطلاعات به دیتابیس فرمم utf-8 هستش.یه چیز دیگه اینکه وقتی تو phpmyadmin اطلاعات دیتابیسم رو نگاه میکنم خب قابل خوندن نیست مگه اینکه با php اونارو از دیتابیس بگیرم ...

ممنون...

dani777
پنج شنبه 28 آذر 1387, 09:09 صبح
شما کجای کار مشکل دارید
1 دریافت اطلاعات کاربر
2 نحویه جستجو کردن در دیتابیس
3 نحویه نمایش دادهها
.
.
.


مشکل اصلی من با نحوه جستجو کردن در دیتابیس هست . وقتی از LIKE استفاده میکنم در متون انگلیسی جواب میده ولی تو فارسی به مشکل بر میخوره وقتی هم از Full Text Search استفاده میکنم اصلا جوابی نمیگیرم تاپیکای مختلف هم نگاه کردم ولی جواب کاملی نگرفتم

as13851365
پنج شنبه 28 آذر 1387, 10:15 صبح
فک می کنم مشکل دوسمون مشکل منم باشه و در واقع همون گزینه 2 شما @!
ببینید من برای سرچ تو کوئریم از LIKE استفاده می کنم و برای اینگلیسی و اعداد حتی اگه یه حرف رو سرچ کنم جوال میده ..
اما برای فارسی جواب نمیده ...
لازم به ذکره که وقت ارسال اطلاعات به دیتابیس فرمم utf-8 هستش.یه چیز دیگه اینکه وقتی تو phpmyadmin اطلاعات دیتابیسم رو نگاه میکنم خب قابل خوندن نیست مگه اینکه با php اونارو از دیتابیس بگیرم ...

ممنون...

خوب اگر گزینه دوم یعنی نحویه جستجو کردن در دیتابیس باشه قبلا درباره این خیلی گفته شده و دوستان عزیز در این باره نمونه کردهایی رو هم قرار دادن.

برای جستجو در دیتابیس شما می تونید از دستور select استفاده کنید که اگر کمی با دستورات SQL آشنایی داشته باشید هیچ مشکلی نباید داشته باشید.

برای نمونه ما می خواهیم که ورودی کاربر رو در دیتابیس جستجو کنیم و اگر اطلاعاتی در این باره پیدا کردیم آن را به کاربر نشان بدهیم

برای این کار ما اول داده را از کاربر می گیریم که برای این کار از کدی مانند کد زیر استفاده می کنیم


<form action="search.php" method="post">
<input type="text" name="textsearch">
<input type="submit" value="search">
</form>

حالا ما اطلاعات رو به صفحه مثلا search.php ارسال می کنیم و بعد در این صفحه اطلاعات رو می گیریم و آن را از نظر امنیت چک می کنیم که نمونه کدهایی برای این کار قبلا معرفی شده است حالا ما به عنوان مثلا از کد زیر استفاده می کنیم تا داده های ارسالی توسط کاربران رو بررسی کنیم :

<?php
function amnyat($value)
$value=htmlspecialchars($value);
$value=strip_tags($value);
return $value;
}
if(isset($_POST['textsearch']))
{
$textsearch=amnyat($_POST['textsearch'])
$host='localhost';
$user='root';
$pass='';
$bank='bank';
$db=mysql_connect($host,$user,$pass);
if($db)
{
if(mysql_select_db($bank,$db))
{
$q="select * from post1 where memo1 lik '%'$textsearch'%'";
$r=mysql_query($q);
if($r)
{
if(mysql_num_rows($r)>0)
{
while($a=mysql_fetch_array($r))
echo $a['memo1'];//نمایش اطلاعات پیدا شده
}
else echo 'هیچ اطلاعاتی ثبت پیدا نشد'
}
}
}
}
else
echo "اگر فیلد مورد نظر خالی ارسال شده باشد در این قسمت می تونید اختار و یا هر چیزی که دوست دارید رو انجام بدهید";
?>

به صورت خلاصه وار کدها رو قرار دادم فکر نکنم زیاد مبهم باشه ولی اگر نیاز به راهنمایی بیشتر داشتید حتما کمی در سایت جستجو کنید اگر باز به نتیجه ای نرسیدید سوال خود را مطرح کنید :تشویق:
اگر جایی رو اشتباه گفتم استادان اصلاح کنند

narsic
پنج شنبه 28 آذر 1387, 11:41 صبح
یکی از دوستان هم با ajax یکی ساخته بود تو همبن فروم بگردی پیدا میکنی یادم نیست کی بود .

dani777
جمعه 29 آذر 1387, 13:30 عصر
خوب اگر گزینه دوم یعنی نحویه جستجو کردن در دیتابیس باشه قبلا درباره این خیلی گفته شده و دوستان عزیز در این باره نمونه کردهایی رو هم قرار دادن.

برای جستجو در دیتابیس شما می تونید از دستور select استفاده کنید که اگر کمی با دستورات SQL آشنایی داشته باشید هیچ مشکلی نباید داشته باشید.

برای نمونه ما می خواهیم که ورودی کاربر رو در دیتابیس جستجو کنیم و اگر اطلاعاتی در این باره پیدا کردیم آن را به کاربر نشان بدهیم

برای این کار ما اول داده را از کاربر می گیریم که برای این کار از کدی مانند کد زیر استفاده می کنیم


<form action="search.php" method="post">
<input type="text" name="textsearch">
<input type="submit" value="search">
</form>

حالا ما اطلاعات رو به صفحه مثلا search.php ارسال می کنیم و بعد در این صفحه اطلاعات رو می گیریم و آن را از نظر امنیت چک می کنیم که نمونه کدهایی برای این کار قبلا معرفی شده است حالا ما به عنوان مثلا از کد زیر استفاده می کنیم تا داده های ارسالی توسط کاربران رو بررسی کنیم :

<?php
function amnyat($value)
$value=htmlspecialchars($value);
$value=strip_tags($value);
return $value;
}
if(isset($_POST['textsearch']))
{
$textsearch=amnyat($_POST['textsearch'])
$host='localhost';
$user='root';
$pass='';
$bank='bank';
$db=mysql_connect($host,$user,$pass);
if($db)
{
if(mysql_select_db($bank,$db))
{
$q="select * from post1 where memo1 lik '%'$textsearch'%'";
$r=mysql_query($q);
if($r)
{
if(mysql_num_rows($r)>0)
{
while($a=mysql_fetch_array($r))
echo $a['memo1'];//نمایش اطلاعات پیدا شده
}
else echo 'هیچ اطلاعاتی ثبت پیدا نشد'
}
}
}
}
else
echo "اگر فیلد مورد نظر خالی ارسال شده باشد در این قسمت می تونید اختار و یا هر چیزی که دوست دارید رو انجام بدهید";
?>

به صورت خلاصه وار کدها رو قرار دادم فکر نکنم زیاد مبهم باشه ولی اگر نیاز به راهنمایی بیشتر داشتید حتما کمی در سایت جستجو کنید اگر باز به نتیجه ای نرسیدید سوال خود را مطرح کنید :تشویق:
اگر جایی رو اشتباه گفتم استادان اصلاح کنند

ممنون که وقت گذاشتین و راهنماییم کردین , من خودم از همین کد استفاده کردم. در متون انگلیسی هم به مشکل بر نخوردم ولی مشکل اصلی من زمانی که میخوام یه کلمه فارسی رو تو یه متن فارسی در داخل رکورد جستجو کنم , چیزی پیدا نمیکنه. ضمنا تو تاپیکای دیگه هم مثل این موضوع زیاد دیدم ولی اوناهم مشکلمو برطرف نکرد:افسرده::ناراحت:

dani777
یک شنبه 01 دی 1387, 17:09 عصر
یکی نیست مشکل منو حل کنه؟؟؟؟؟؟؟؟؟

fmehdi
دوشنبه 02 دی 1387, 12:22 عصر
asl شما که زحمت کشیدی. کاملش هم بکن لطفا .

as13851365
دوشنبه 02 دی 1387, 12:49 عصر
مشکل از کد نمی تونه باشه مشکل از جای دیگه است

احتمالا در دیتابیس مشکلی هست مثلا تنظیم نبودن UTF8 و ...

من از این کد در سیستم خودم استفاده کردم و هیچ مشکلی هم نبود هر کلمه ای رو که برای جستجو وارد می کنم نتیجه رو درست نشون می شه .

شما یک سری به تنظیمات دیتابیس خودتان بزنید بد نیست به احتمال زیاد مشکل شما با تنظیمات دیتابیس حل خواهد شد