PDA

View Full Version : حرفه ای: شناسایی تکراری بودن دو خبر



bbpsoft
یک شنبه 18 اسفند 1392, 20:02 عصر
تو سایت من کاربرها میتونن خبر ارسال کنن.
بعد امکان داره چند کاربر در مورد یه مطلب نوشته باشن که من نمیخوام مطالب تکراری باشه.
بهترین روش برای تشخیص تکراری بودن خبرها از هم چیه؟

***BiDaK***
یک شنبه 18 اسفند 1392, 20:15 عصر
میتونی قبل از ثبت خبر توسط کاربر یک select به جدول بزنی و چک کنی اگر فیلدی رشته ی تکراری (مثل هم) داره خبر رو ثبت نکنه.

beh3000
یک شنبه 18 اسفند 1392, 20:54 عصر
البته احتمالا منظور bidak از رشته تکراری دقیقا مثل هم نیست ... چون همه کاربرا با یک متن که خبر رو درج نمیکنن ... باید یه الگوریتم بنویسی که درصد تشابه یک خبر رو جستجو کنه توی بانک ... مثلا این خبری که میخواد درج بشه باید اول چک کنی خبری توی بانک با درصد تشابه 50 درصد به بالا وجود داره یا نه اگه وجود داشت ثبت نمیکنی ... یا اینکه میتونی به جای محتوای خبر عنوان خبر رو ملاک قرار بدی که درصد تشابه رو توی عنوان خبرها جستجو کنه ... البته اگه خبر ها برچسب داشته باشن خیلی بهتره ... یا اینکه کاربر رو مجبور کنی حداقل سه تا تگ ثبت کنه چون تک ها کلمات اصلی یک خبر هستند میشه از اونها بهتر درصد تشابه رو تشخیص داد

بعد از این کارا هم چون بالاخره هر کاری بکنی درصد خطا وجود کاره توی پنل کاربر ادمین باید یک لیستی از خبرها تهیه کنی که جلو هر خبر بیشترین درصد تشابهش با یک خبر رو دربیاره و بصورت دستی هم چک بکنی

***BiDaK***
یک شنبه 18 اسفند 1392, 22:17 عصر
البته احتمالا منظور bidak از رشته تکراری دقیقا مثل هم نیست ... چون همه کاربرا با یک متن که خبر رو درج نمیکنن ... باید یه الگوریتم بنویسی که درصد تشابه یک خبر رو جستجو کنه توی بانک ... مثلا این خبری که میخواد درج بشه باید اول چک کنی خبری توی بانک با درصد تشابه 50 درصد به بالا وجود داره یا نه اگه وجود داشت ثبت نمیکنی ... یا اینکه میتونی به جای محتوای خبر عنوان خبر رو ملاک قرار بدی که درصد تشابه رو توی عنوان خبرها جستجو کنه ... البته اگه خبر ها برچسب داشته باشن خیلی بهتره ... یا اینکه کاربر رو مجبور کنی حداقل سه تا تگ ثبت کنه چون تک ها کلمات اصلی یک خبر هستند میشه از اونها بهتر درصد تشابه رو تشخیص داد

بعد از این کارا هم چون بالاخره هر کاری بکنی درصد خطا وجود کاره توی پنل کاربر ادمین باید یک لیستی از خبرها تهیه کنی که جلو هر خبر بیشترین درصد تشابهش با یک خبر رو دربیاره و بصورت دستی هم چک بکنی
با توابع خود php هم این کارو میشه انجام داد.
منظورتون اینه تک تک رکوردها چک بشن یا کوئری بوسیله sql؟
در مورد تایید هم مدیر سایت باید همه ی مطالب کاربران رو با تایید منتشر کنه.

bbpsoft
سه شنبه 20 اسفند 1392, 21:58 عصر
ممنون از شما من تو محتوای متن‌ها (که امکان داره چندین صفحه هم بشه) میخوام چک کنه که این خبرها تکراری هست یا نه(حداقل 50% بتونه درست بگه).
دقیق کدش رو میخوام که چجوری میتونه مقایسه کنه.
اگه بتونید دقیق بگید ممنون میشم.

sh.n.n786
سه شنبه 20 اسفند 1392, 23:06 عصر
درود و ...
این این کارو انجام میده


​similar_text ( string $first , string $second [, float &$percent ] )

***BiDaK***
سه شنبه 20 اسفند 1392, 23:10 عصر
درود و ...
این این کارو انجام میده


​similar_text ( string $first , string $second [, float &$percent ] )

خوب این درست ولی الان مسئله اینه که تک تک رکوردها باید بررسی بشه و این توو حجم اطلاعات بالا درست نیست.
به نظر من مدیر قبل از انتشار خبر داخل سایت یک سرچ بزنه بعد خبر رو منتشر کنه.:لبخند:

beh3000
چهارشنبه 21 اسفند 1392, 08:16 صبح
میشه اخبار یک هفته اخیر رو درآورد توی اونها جستجو کرد که با داده های زیادی سر و کار نداشته باشیم ... فک نمیکنم یعد از گذشت یک هفته دوباره یک خبر رو درج کنن کم پیش میاد ... اگه که میخوای جستجوگر خبری درست کنی که از سایتهای مختلف خبر جمع کنه همین کارو بکن چون اونها دیگه خبرهای روز رو میذارن

MMSHFE
چهارشنبه 21 اسفند 1392, 09:52 صبح
میتونید از الگوریتمهای Levenshtein Distance (http://www.jisaacks.com/find-similar-products-in-mysql-using-levenshtein-distance) یا Jaro Winkler Similarity (http://dannykopping.com/blog/fuzzy-text-search-mysql-jaro-winkler) یا هر الگوریتم دلخواه دیگه توی خود MySQL استفاده کنید اما نکته اصلی اینه که توی MySQL تابع تعریف کنید و ازش استفاده بشه. اینطوری سرعت استخراج اطلاعات خیلی بیشتر از وقتی میشه که کل اطلاعات رو بکشیم بیرون و بعد توی PHP دوباره روی اونجا جستجو کنیم.

ali2k5
پنج شنبه 22 اسفند 1392, 01:28 صبح
جستجوی fulltext و مرتب سازی بر اساس میزان تشابه