PDA

View Full Version : سوال: چند حرف قبل، چند حرف بعد!



zoro21750
جمعه 18 آذر 1384, 10:02 صبح
سلام.
چه جوری میشه از یه چند حرف (کلمه) قبل تا بعد یه جستجو رو که با like گرفتیمو نشون داد؟
مرسی.

moohssenn
شنبه 19 آذر 1384, 11:46 صبح
من راستش دقیقا منظورتونو متوجه نشدم .
اما فکر کنم میخوای از یک کلمه فقط چند حرفشو نشو ن بدی و بقیه اونو نقطه بزاری . اگه اینه و با php کار میکنی میتونی از مدل زیر استفاده کنی . من اینو از iranphp.net گرفتم

<?PHP
/**
* PHP version 5
*
* This source file is subject to version 2.1 of the GNU Lesser General Public
* License, that is bundled with this package in the file COPYING, available
* through the world wide web at the following URI:
* http://www.gnu.org/copyleft/lesser.html.
*
* @author Arash Mikaeili<arash@iranphp.net>
*
* Return part of a string.
* returns the portion of string specified by the start and length parameters.this function works like substr() but this version is UTF-8 safe
* @param string $string
* @param int $length
* @return string
*/
function utf8_safe_substr($string,$length,$start=0) {
//setting internal encoding to utf-8
iconv_set_encoding('internal_encoding', 'UTF-8');
$string=iconv_substr($string,$start,$length);
$string=iconv_substr($string,0,iconv_strrpos($stri ng,' ')+1);
return $string;
}
echo utf8_safe_substr('ورژن کنترل به معنای هنر مدیریت تغییرات اطلعات میباشد. برنامه نویسان در حین طراحی یک پروژه
اغلب ساعتهای زیادی را صرف ساختن فایلهای جدید کرده و پس از ساخت این فایلها تغییرات زیادی را
طی روزهای متمادی در تک تک این فایلها اعمال می نمایند. بنابر این میتوان گفت که هر فایلی از پروژه
از بدو تولد تا زمان بلوغ )تکمیل شدن نهایی( بارها تغییر پیدا میکند که حتی در مواردی به خاطر
اشتباهات برنامه نویسی، برنامه نویس ناچار میشود از نسخه قبلی و یا حتی چند نسخه قبلی یک
فایل استفاده کند.',35);
//this will print ورژن کنترل به معنای هنر مدیریت to browser
?>

zoro21750
یک شنبه 20 آذر 1384, 09:15 صبح
ممنون از جوابتون.
منظورم این نبود!
یعنی مثلا شما تو یه text دنبال کلمه book میگردین. من بتونم مثلا اون جمله ای رو که این کلمه توش قرار داره رو نشون بدم.
مرسی

oxygenws
یک شنبه 20 آذر 1384, 09:59 صبح
شما فیلد رو انتخاب می کنی، از اون به بعدش به php مربوط میشه و از طریق اون (و شاید عبارات منظم) می تونی متن مورد نظر رو انتخاب کنی.

zoro21750
دوشنبه 21 آذر 1384, 20:31 عصر
مزسی از جوابتون
مگه میشه mysql به این عظمت، یه همچین چیزی نداشته باشه؟
بعد من یه متن چند مگی رو بیارم تو پی اچ پی بعد توش بگردم دنبالش دوباره (بدون ایندکس و سرچ کاراکتر به کاراکتر) ؟ cpu-usage و چیکار کنم؟
مای اسکیو ال حتما باید یه چیزی داشته باشه که حد اقل بگه این سرچ از کاراکتر چندم شروع شده و یا حتی بیشتر.

oxygenws
دوشنبه 21 آذر 1384, 21:59 عصر
cpu-usage و چیکار کنم؟
cpu usage که چندان فرقی نمی کنه! ولی حافظه مصرف میشه.


مگه میشه mysql به این عظمت، یه همچین چیزی نداشته باشه؟
فکر کنم عبارات منظم کمی بتونه کمکت کنه
http://dev.mysql.com/doc/refman/5.0/en/regexp.html

و تمامی توابع مربط به رشته ها رو می تونی اینجا ببینی، توشون substring و position و ... هم میابی:
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html

موفق باشی.

zoro21750
دوشنبه 21 آذر 1384, 23:42 عصر
cpu usage که چندان فرقی نمی کنه! ولی حافظه مصرف میشه.
فرقی نمیکنه؟! شما دیگه چرا استاد. یه تسک منیجر باز کنید (با عرض معذرت از لینوکسی ها!) ببینید تو یه تکست 100 تا 200k بدون ایندکس (مثلا با strops) usage آپاچی چقد میشه و برای چه قدر!


فکر کنم عبارات منظم کمی بتونه کمکت کنه
http://dev.mysql.com/doc/refman/5.0/en/regexp.html

و تمامی توابع مربط به رشته ها رو می تونی اینجا ببینی، توشون substring و position و ... هم میابی:
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html
ممنونم. احتمالا همین که گفتین جواب میده.
مرسی.

oxygenws
سه شنبه 22 آذر 1384, 11:37 صبح
فرقی نمیکنه؟! شما دیگه چرا استاد. یه تسک منیجر باز کنید (با عرض معذرت از لینوکسی ها!) ببینید تو یه تکست 100 تا 200k بدون ایندکس (مثلا با strops) usage آپاچی چقد میشه و برای چه قدر!
چون این عمل به هر ترتیب باید انجام بشه، چه اینکه سمت mysql انجام بشه و چه اینکه سمت php...
شاید عمل فوق در آپاچی (یا php) کلی پروسس بگیره، اما مسلما اگر با بانک هم انجام بدید، باز هم کلی پروسس می گیره!!! :)


ممنونم. احتمالا همین که گفتین جواب میده.
ممنون می شم نتیجه نهایی رو هم همینجا بنویسی تا مابقی دوستان هم فیض ببرند(کوئری نهایی)

موفق باشی :)

zoro21750
سه شنبه 22 آذر 1384, 22:44 عصر
چون این عمل به هر ترتیب باید انجام بشه، چه اینکه سمت mysql انجام بشه و چه اینکه سمت php...
شاید عمل فوق در آپاچی (یا php) کلی پروسس بگیره، اما مسلما اگر با بانک هم انجام بدید، باز هم کلی پروسس می گیره!!! :)

نه دیگه! این مقدار بالای سی پی یو، فقط یه بار و اونم موقع ساختن ایندکس مصرف میشه و سر درخواست های بعدی، سرعت (عکس سی پی یو) اینجوری که تو داکیومنتا اومده، حد اقل بین 5 تا 8 برابر میشه (بستگی به متن داره). وگرنه اصلا ایندکسینگ برای چی لازمه!!! :)

oxygenws
چهارشنبه 23 آذر 1384, 09:44 صبح
نه دیگه! این مقدار بالای سی پی یو، فقط یه بار و اونم موقع ساختن ایندکس مصرف میشه و سر درخواست های بعدی، سرعت (عکس سی پی یو) اینجوری که تو داکیومنتا اومده، حد اقل بین 5 تا 8 برابر میشه (بستگی به متن داره). وگرنه اصلا ایندکسینگ برای چی لازمه!!! :)
من اونقدر در مورد ایندکسینگ روی رشته های بزرگ در بانک اطلاع ندارم، اما فکر می کنم در حالت عادی هیچ فرقی نخواهد کرد، یعنی ایندکسینگ به این عملی که شما لازم دارید (چندین بار جستجو در کل یک رشته) تاثیری نداشته باشد.
(در مورد فول تکست سرچ نظر نمی دم، چون با ساختار بنیادی اون هم آشنا نیستم، اما همچنان فکر می کنم هیچ ربطی نداشته باشه به مثلا substring!!!)

zoro21750
چهارشنبه 23 آذر 1384, 12:28 عصر
آنقدر بدیهی است که نیازی به ادامه بحث ندارد.

oxygenws
چهارشنبه 23 آذر 1384, 19:03 عصر
آنقدر بدیهی است که نیازی به ادامه بحث ندارد.
ممنون که مانع یاد گرفتن من و مابقی دوستان می شوی.
داریم بحث علمی می کنیم، اگر برای شما *بدیهی* است، مرحمت کنید و به ما هم آموزش دهید.