نمایش نتایج 1 تا 18 از 18

نام تاپیک: تشخیص تکراری بودن کلمه واکشی شده از دیتابیس

  1. #1

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

    سلام از طریق یک فرم تگ مطالب رو از کاربر دریافت می کنم .تگ ها با فاصله از هم جدا میشن.به طور مثال برای دو مطلب مختلف "pdo دیتابیس prepare " "pdo prepare mysql" حالا هر چندتا که کاربر وارد کنه .تگ ها به همین صورت در پایگاه داده ذخیره میشن و موقع چاپ اونها رو جدا می کنم (impload) و نمایش میدم . تا اینجای قضیه مشکلی ندارم .اما نیاز دارم که همه تگ های تمام مطالب رو فراخوانی کنم به صورتی که غیر تکراری باشند یعنی هرتگ فقط یکبار تکرار بشه چطور می تونم اینکار رو انجام بدم. تووی مثال بالا موقع فراخوانی دو کلمه pdo prepare تووی هر دو مطلب تکرار شده بنابراین من فقط می خوام یکبار نمایش داده بشن . در ضمن چون به طور مکرر نمایش داده میشه برای همین ممنون میشم به پرفرمنس هم توجه داشته باشید.

  2. #2
    کاربر دائمی آواتار فرزند کوروش
    تاریخ عضویت
    مهر 1389
    محل زندگی
    برنامه نویس زندگی هم میکنه؟
    پست
    486

    نقل قول: تشخیص تکراری بودن کلمه واکشی شده از دیتابیس

    خروجی رو تو ارایه بریز بعد ارایه های تکراری رو حذف کن

  3. #3

    نقل قول: تشخیص تکراری بودن کلمه واکشی شده از دیتابیس

    شما فرض کنید این جدول تگ شامل هزار رکورد باشه من هربار باید این رکوردها رو بریزم تووی یک آرایه و تمام عناصر آرایه رو چک کنم که تکراری نباشن حالا هر فیلد خودش شامب سه کلمه باشه یعنی یک آرایه 3000تایی که باید این سه هزار با هم مقایسه بشن و محتویاتشون تکرار نباشه. راهی که من بلدم اینه که عنصر اول با 2999 عنصر بعدی مقایسه و هر عنصر باهاش برابر باشه حذف بشه و عنصر دوم هم به همین ترتیب و.... اگه تعداد رکوردها بشه 100000 و هر رکورد شامل 10کلمه باشه چه اتفاقی میفته؟ اگه راه بهتری هست ممنون میشم ارائه بدید.
    آخرین ویرایش به وسیله majid1605 : پنج شنبه 16 آبان 1392 در 11:30 صبح

  4. #4
    کاربر دائمی آواتار ابوذر محمودی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تربت حیدریه
    پست
    476

    نقل قول: تشخیص تکراری بودن کلمه واکشی شده از دیتابیس

    اولین کار اشتباهتون اینه که :
    تگ ها به همین صورت در پایگاه داده ذخیره میشن
    لزومی نداره تگ های تکراری ذخیره بشن ، یکیش باید ذخیره شه .
    عمل حذف تکراری ها باید هنگام درج تو دیتابیس صورت بگیره ، فرض کنین این عمل روی هزار تا تگ باید اعمال شه ، که زمان نسبی مثلاً 5 ثانیه صرف اون میشه.
    اگه موقع درج تو دیتابیس این عمل انجام شه ، فقط یکبار انجام میشه ، و کل زمان مصرفی 5 ثانیه هست. time=5
    حالا اگه موقع نمایش بخواین این کارو بکنین به ازای هر بازدید 5 ثانیه باید صرف شه : time=Visit*5


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

    حالا اگه تازه میخواین داده هارو بریزین تو دیتابیس از دستور array_unique برای حذف تکراری ها استفاده کنین ، و یا اینکه خودتون یه چیزی مثل هش تیبل بسازین و مقادیرو توش بریزین.
    مثال واسه دستور array_unique :

    $a=array("salam","chetori?","hi","salam","hi","how r u","salam","salam","how r u","how r u");
    print_r( array_unique($a));

    خروجی :
    Array ( [0] => salam [1] => chetori? [2] => hi [5] => how r u )

  5. #5

    نقل قول: تشخیص تکراری بودن کلمه واکشی شده از دیتابیس

    وقتی یک مطلب ذخیره میشه همراهش تگ های متناظرش نیز تووی یه جدول دیگه ذخیره میشه موقع نمایش مطلب زیر مطالب تگ ها نمایش داده میشه و کارههای دیگه ایی که بر اساس تگ ها صورت می گیره .برای همین نمی تونم تکراری ها رو حذف کنم . یعنی به جزء استفاده از آرایه راه دیگه ایی وجود نداره؟
    آخرین ویرایش به وسیله majid1605 : پنج شنبه 16 آبان 1392 در 17:50 عصر

  6. #6
    کاربر دائمی آواتار ابوذر محمودی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تربت حیدریه
    پست
    476

    نقل قول: تشخیص تکراری بودن کلمه واکشی شده از دیتابیس

    وقتی یک مطلب ذخیره میشه همراهش تگ های متناظرش نیز تووی یه جدول دیگه ذخیره میشه
    چه لزومی داره که تگ ها همونطور که از کاربر دریافت میشه تو بانک ذخیره شه؟؟

  7. #7

    نقل قول: تشخیص تکراری بودن کلمه واکشی شده از دیتابیس

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

  8. #8
    کاربر دائمی آواتار ابوذر محمودی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تربت حیدریه
    پست
    476

    نقل قول: تشخیص تکراری بودن کلمه واکشی شده از دیتابیس

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

    حالا روش پیشنهادی من اینه که یه جدول برای تگ ها بسازین در ساده ترین حالت سه تا فیلد داشته باشه ، tag_id , post_id , tag

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

  9. #9

    نقل قول: تشخیص تکراری بودن کلمه واکشی شده از دیتابیس

    روشس که آخر گفتید همین روشیه که تووی پست اول اشاره کردم و کارکتر space رو مد نظر قرار دادم . اما اینکه تگ های اضافی رو حذف کنم گفتم که هر مطلبی تگ های خودش رو داره و ممکنه با یک مطلب دیگه تووی چند تگ با هم مشترک باشند. تووی خیلی از cms ها و یا سایتها همینطوره یعنی هر مطلب تگ های مربوط به خودش رو داره سایت http://stackoverflow.com رو نگاه کنید تووی همین صفحه اول چندتا تگ تکراری وجود داره برای هر مطلب هم جداگانه است. مطالب بر اساس همین تگ ها دسته بندی شدند و ممکنه یک سوال در چند بخش باشه.

  10. #10
    کاربر دائمی آواتار ابوذر محمودی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تربت حیدریه
    پست
    476

    نقل قول: تشخیص تکراری بودن کلمه واکشی شده از دیتابیس

    ببخشید ببخشید من درست متوجه منظورتون نشده بودم ، من فکر کردم میخوان تگ های تکراری رو برای یک مطلب حذف کنین ، واسه همین متعجب بودم که چرا موقع درج این کارو انجام نمیدین.
    شما میخواین همه تگ هارو تو یک صفحه نمایش بدین که تکراری هم نباشه ؟
    خب اگه از روش جدول جدا برای تگ ها استفاده کنی تو خود کوئری میتونی داده های تکراری رو از نتیجه حذف کنی.

    اینطوری:

    select tag_id,tag,post_id
    from tag_table
    group by tag
    آخرین ویرایش به وسیله ابوذر محمودی : پنج شنبه 16 آبان 1392 در 18:40 عصر

  11. #11

    نقل قول: تشخیص تکراری بودن کلمه واکشی شده از دیتابیس

    ظاهرا منظورم رو متوجه نشدید من می خوام از یک جدول به صورت زیر اطلاعات رو واکشی کنم که تکراری هم نباشند یعنی راهی باشه که کلمات تکرار شده رو حذف کنم و اگر ساختار جدول اشتباه است ساختار بهتری رو پیشنهاد بدید. حالا می خوام همه داده های ستون تگ رو واکشی کنم و تکراری ها حذف بشن . من می خوام خروجی من بشه html php sql css
    عکس های ضمیمه عکس های ضمیمه

  12. #12

    نقل قول: تشخیص تکراری بودن کلمه واکشی شده از دیتابیس

    بجای اینهمه طولانی کردن مسائل، درمورد دستور SELECT DISTINCT در MySQL و دستور array_unique در PHP جستجو کنید. با ترکیب این دستورات با دستوراتی مثل explode و implode میتونید کاری که میخواین رو انجام بدین.

  13. #13
    کاربر دائمی آواتار ابوذر محمودی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تربت حیدریه
    پست
    476

    نقل قول: تشخیص تکراری بودن کلمه واکشی شده از دیتابیس

    نقل قول نوشته شده توسط majid1605 مشاهده تاپیک
    ظاهرا منظورم رو متوجه نشدید من می خوام از یک جدول به صورت زیر اطلاعات رو واکشی کنم که تکراری هم نباشند یعنی راهی باشه که کلمات تکرار شده رو حذف کنم و اگر ساختار جدول اشتباه است ساختار بهتری رو پیشنهاد بدید. حالا می خوام همه داده های ستون تگ رو واکشی کنم و تکراری ها حذف بشن . من می خوام خروجی من بشه html php sql css
    متوجه منظورتون شدم ، دقت کنین گفتم بهتون که اگه از روش جدول جدا برای تگ ها استفاده کنی تو خود کوئری میتونی داده های تکراری رو از نتیجه حذف کنی.
    یعنی اگه ساختار جدولتو عوض کنی میتونی اینکارو با همون دستور بالا که دادم انجام بدی.
    با این ساختار فعلی جدولتون هر رکورد رو که واکشی میکنی کلشو به صورت رشته میخونه ، و بنابراین با کوئری نمیشه حذف کردشون مگه اینکه همشو بخونی با array_unique کار کنی .

    من روش پیشنهادی رو گفتم بهتون ، تگ ها تو جدول جدا.

  14. #14

    نقل قول: تشخیص تکراری بودن کلمه واکشی شده از دیتابیس

    از اون دو روش که در پست 7 اشاره کردم کدوم یکی بهتره ؟روش بهتری نسبت به اون دوتا وجود داره؟
    بجای اینهمه طولانی کردن مسائل، درمورد دستور SELECT DISTINCT در MySQL و دستور array_unique در PHP جستجو کنید. با ترکیب این دستورات با دستوراتی مثل explode و implode میتونید کاری که میخواین رو انجام بدین.
    با این دستورات تا حدودی آشنا هستم ولی استفاده از آرایه برای همچین کاری فکر کنم پرفرمنس رو پایین میاره و من دنبال یه کار بهینه هستم
    ممنون

  15. #15
    کاربر دائمی آواتار ابوذر محمودی
    تاریخ عضویت
    فروردین 1387
    محل زندگی
    تربت حیدریه
    پست
    476

    نقل قول: تشخیص تکراری بودن کلمه واکشی شده از دیتابیس

    از اون دو روش که در پست 7 اشاره کردم کدوم یکی بهتره ؟روش بهتری نسبت به اون دوتا وجود داره؟
    با توجه به کاری که شما میخوان انجام بدین بهتره جدول جداگانه برای تگ ها بسازین ، چرا ؟ چون گفتم بهتون ، اینطوری با خود کوئری که به بانک میزنین تکراری ها حذف میشن . که این کار هم با group by بر اساس فیلد تگ میشه و هم دستور DISTINCT روی فیلد تگ ؛ ولی ازونجایی که اگه بخواین همراه با فیلدی که DISTINCT برمیگردونه فیلد دیگه ای هم داشته باشین یکم کوئری مشکل تر میشه ، میتونید با همون group by این کارو انجام بدین.

    شما اگه ساختارتو عوض کنی فقط با همین دستور زیر میتونی تکراری ها رو حذف کنی :
    select tag_id,tag,post_id
    from tag_table
    group by tag


    دقت کنین که هر سوالی که میپرسین جوابش قبلا داده شده.
    من ایده ای جز اینکه جدولتونو جدا کنید ندارم ، میتونید منتظر بمونید دیگران ایده بدند ، یا اینکه :
    به CMS های وردپرس و جوملا و .. رجوع کنید و ساختار اون هارو هم بررسی کنید .

  16. #16

    نقل قول: تشخیص تکراری بودن کلمه واکشی شده از دیتابیس

    اگه جداول تبدیل به سه جدول بشه چی ؟
    1-جدول تگ که شامل تگ ها به صورت یونیک باشه 2-جدول مطالب 3-جدول تگ مطالب
    اولی فقط دو فیلد id و tag که تگها در صورت غیر تکراری بودن ذخیره میشن
    سومی هم تگ های هر مطلب هستند که یک فیلد اون post-id و فیلد دیگه رو نمیدونم چطور پایه ریزی کنم؟تگهایی که کاربر وارد می کنه به صورت رشته ذخیره کنم (که فکر می کنم خیلی بهتره چون با دستور ساده like میشه حتی مطالب رو بر اساس یک تگ هم واکشی کرد و... ) یا ....
    فقط می مونه نحوه ذخیره سازی جدول اول (تگ) چه روشی واسه مطمئن شدن از وارد شدن غیر تکراری تگ ها در جدول استفاده کنم؟
    کل تگ ها رو واکشی و در یک آرایه بریزم و با تگ های وارد شده بررسی کنم؟یه روش که پرفرمنس بالای داشته باشه می خوام
    ممنون

  17. #17
    کاربر جدید
    تاریخ عضویت
    مهر 1395
    محل زندگی
    http://www.rahkarenovin.com/
    پست
    20

    نقل قول: تشخیص تکراری بودن کلمه واکشی شده از دیتابیس

    سلام دوستان من میخوام محتوای تکراریمو حذف کنم و از array_unique استفاده میکنم و قطعه کدی که نوشتمو میزارم ولی همچنان محتوای تکراری من در خروجی نشون داده میشه!



    $result2 = $db->sql_query("SELECT DISTINCT keyword FROM ".$prefix."_blog where keyword!='' and active=1 order by keyword asc");
    while (list($keyword) = $db->sql_fetchrow($result2)) {
    $names = explode('،',$keyword);
    $names_unique = array_unique($names);
    $ttgo = str_replace(" ", "-", $names_unique[0]);

    $out1 .= "<li><a href='".$site_url."search/".$ttgo."/'>".$names_unique[0]."</a></li>\n";

    }

    آخرین ویرایش به وسیله siavash82i : دوشنبه 23 اردیبهشت 1398 در 11:37 صبح

  18. #18

    نقل قول: تشخیص تکراری بودن کلمه واکشی شده از دیتابیس

    نقل قول نوشته شده توسط siavash82i مشاهده تاپیک
    سلام دوستان من میخوام محتوای تکراریمو حذف کنم و از array_unique استفاده میکنم و قطعه کدی که نوشتمو میزارم ولی همچنان محتوای تکراری من در خروجی نشون داده میشه!
    سلام لطفا سوالتان را در یک تاپیک جدید بپرسید

تاپیک های مشابه

  1. پاسخ: 7
    آخرین پست: یک شنبه 17 مهر 1390, 20:35 عصر
  2. تشخیص تکراری بودن فیلد Primary key
    نوشته شده توسط satida در بخش بانک های اطلاعاتی در Delphi
    پاسخ: 7
    آخرین پست: سه شنبه 19 بهمن 1389, 18:43 عصر
  3. نحوه تبدیل تاریخ میلادی واکشی شده از دیتابیس به تاریخ شمسی در کریستال
    نوشته شده توسط e_ghadimi در بخش ابزارهای گزارش سازی
    پاسخ: 1
    آخرین پست: شنبه 22 خرداد 1389, 00:22 صبح
  4. سوال: تشخیص تکراری بودن یک ردیف در بانک
    نوشته شده توسط bahar2008 در بخش VB.NET
    پاسخ: 17
    آخرین پست: شنبه 08 تیر 1387, 09:22 صبح
  5. سوال: تشخیص فارسی بودن متن ارسال شده
    نوشته شده توسط maysamscript در بخش PHP
    پاسخ: 7
    آخرین پست: شنبه 11 خرداد 1387, 11:30 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •