پیداکردن تعداد عبارت جستجو شده در متن

alimaya

Active Member
سلام خدمت همه دوستان. اگه ما بخوایم تعداد عبارتی مثل "مجیدآنلاين" رو در یک متن خیلی بزرگ فرضا 10000 خط جستجو کنیم سریعترین راه ممکن چیه؟ ميدونم با mmb امکان جستجو در متن وجود داره ولی این راه اصلا سریع نیست. اگه در sqlite هم کدی وجود داره که بشه تعداد عبارت جستجو شده در ستون رو برگردونه(نه تعداد ردیفها) ممنون میشم اگه راهنماییم کنید.
 

alimaya

Active Member
این لینک رو مطالعه کنید:

http://www.w3schools.com/sql/sql_func_count.asp

با استفاده از همین تکنیک میشه تعداد نتایج رو دریافت کرد. با استفاده از COUNT

ممنون بخاطر پاسختون. آدرس بالا که فرموده بودید رو مطالعه کردم و چندتا کد رو هم امتحان کردم. ولی بازم تعداد ردیف ها برگردونده میشه نه تعداد عباراتی که مشابه عبارت جستجو شده هستند. میشه راهنماییم کنید که کد رو چطور بنویسم تا تعداد کل عبارات "of" موجود در ستون Notes برگردونده بشه؟
 

MahmoodM30

مدیر <A href="http://forum.majidonline.com/forums/
شما دقیقا میخوایید چیکار کنید؟ میخوایید ببنید از یک کلمه چند تا توی دیتابیس هست ؟ اگه میشه دقیق منظورتون رو بگید

فایل پیوست هم دانلود نمیشه ببینمش
 

MahmoodM30

مدیر <A href="http://forum.majidonline.com/forums/
میتونید از دستور Group By هم استفاده کنید برای بدست آوردن تعداد کلمات تکراری
 

alimaya

Active Member
مرسی بخاطر پاسختون. عکس رو دوباره آپ کردم.
میشه راهنماییم کنید که کد رو چطور بنویسم تا تعداد کل عبارات "of" موجود در ستون Notes برگردونده بشه؟

data.JPG
 

MahmoodM30

مدیر <A href="http://forum.majidonline.com/forums/
شما باید کد رو به این شکل بنویسید
کد:
StringSearch$='of'
SqlQuery$='SELECT Notes FROM Employees WHERE Notes LIKE \'%'+StringSearch$+'%\';'
PluginSet("SQLPlugin","SqlQuery$")
PluginRun("SQLPlugin","Query")
PluginGet("SQLPlugin","Rows")
Message("","Rows")
 

alimaya

Active Member
شما باید کد رو به این شکل بنویسید
کد:
StringSearch$='of'
SqlQuery$='SELECT Notes FROM Employees WHERE Notes LIKE \'%'+StringSearch$+'%\';'
PluginSet("SQLPlugin","SqlQuery$")
PluginRun("SQLPlugin","Query")
PluginGet("SQLPlugin","Rows")
Message("","Rows")

ممنون بخاطر پاسختون. ولی این کدی که شما نوشتید تعداد ردیف هایی رو برمیگردونه که عبارت "of" داخلشون وجود داره نه تعداد کل عبارت "of" رو. مثلا ممکنه تو یک ردیف 20 تا عبارت "of" وجود داشته باشه ولی کد شما عدد 1 رو برای اون ردیف برمیگردونه
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
یک راهش اینه:
کد:
SELECT ((length(`field`) - length(REPLACE(lower(`field`),'sample','')))/length('sample')) as cnt
FROM mytable
WHERE `field` like '%sample%'

اینجا تستش کنید: http://www.sqlfiddle.com/#!5/c1340/10
 
آخرین ویرایش:

alimaya

Active Member
یک راهش اینه:
کد:
SELECT ((length(`field`) - length(REPLACE(lower(`field`),'sample','')))/length('sample')) as cnt
FROM mytable
WHERE `field` like '%sample%'

اینجا تستش کنید: http://www.sqlfiddle.com/#!5/c1340/10

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

کد:
CREATE TABLE supportContacts
    (
     id integer primary key, 
     type varchar(20), 
     details varchar(30)
    );


INSERT INTO supportContacts
(id, type, details)
VALUES
(1, 'Email', 'Ad--Ad--Ad');


INSERT INTO supportContacts
(id, type, details)
VALUES
(2, 'Twitter', 'Ad--Ad--Ad');


کد:
SELECT ((length(`details`) - length(REPLACE(lower(`details`),'sample','')))/length('sample')) AS cnt
FROM supportContacts
WHERE `details` LIKE '%Ad%'

Capture.PNG
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
خب شما باید عبارت مورد جستجو رو در کوئری بنویسید، من عبارت sample رو جستجو کردم، شما همه جا بجای sample عبارت ad رو بنویسید
 

alimaya

Active Member
خب شما باید عبارت مورد جستجو رو در کوئری بنویسید، من عبارت sample رو جستجو کردم، شما همه جا بجای sample عبارت ad رو بنویسید
همینکارو کردم جناب nevercom. ولی بازهم جواب نداد. دوباره عدد 2 که تعداد ردیف هاست رو برگردوند.
 

nevercom

کاربر متخصص انجمن مولتی مدیا بیلدر
این لینک رو ببینید: http://www.sqlfiddle.com/#!5/f8ec8/1

همون مثال قبلی هست، فقط یک عبارت SUM در اون قرار داده شده که مجموع رو گزارش کنه (برای تست لینک بالا اگر یک دیالوگ براتون باز شد Cancel رو بزنید)
 

جدیدترین ارسال ها

بالا