PDA

View Full Version : جستجوی پیشرفته



yavari
چهارشنبه 02 خرداد 1386, 22:06 عصر
سلام

چجوری میتونم پروسیجری داشته باشم که AND , OR , NOT عبارت مورد جستجو رو هم برگردونه ؟

CREATE PROCEDURE Mtn_Find
(@WordFind nvarchar(50) )
AS
BEGIN
SET NOCOUNT ON;
SELECT @WordFind='%'+RTRIM(@WordFind)+'%'
SELECT Book.ID,Book.bname as [نام کتاب],matnbook.page as [صفحه] from MatnBook JOIN Book ON Book.ID=MatnBook.BookID WHERE (Matn LIKE @WordFind )
END
GO

ممنون میشم راهنمائی کنید !

erahavard
پنج شنبه 03 خرداد 1386, 09:07 صبح
با سلام

ابتدا رشته جستجوی مورد نظر را با برنامه بساز و در پروسیجر خود به صورت پارامتر پاس بده و
و سپس انرا به صورت اسم پارامتر exec اجرا کن

exec @x

erahavard
پنج شنبه 03 خرداد 1386, 09:08 صبح
با سلام ابتدا رشته جستجوی مورد نظر را با برنامه بساز و در پروسیجر خود به صورت پارامتر پاس بده و و سپس انرا به صورت اسم پارامتر exec اجرا کن

yavari
جمعه 04 خرداد 1386, 21:46 عصر
سلام

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


"SELECT book.id,book.bname as [نام کتاب],MatnBook.page as [صفحه] FROM Book JOIN MatnBook ON Book.id=MatnBook.BookID WHERE Matn LIKE '% حکمت %' OR Matn LIKE '% الخاقان %' "
البته فیلد مورد جستجوی من ntext هست !

ممنون میشم راهنمائی کنید !

DonetKarvb
جمعه 04 خرداد 1386, 22:28 عصر
برای جستجو روی فیلدهای ntext بهتره که از Fultext search استفاده کنید. اینطوری هم سرعت بهتری دارید و هم ممطئن تر هست.
برای FTS میتونید به این تاپیک مراجعه کنید:

جستجوهای قدرتمند , استفاده از Full Text Search (http://dotnetsource.com/fa/forum/default.aspx?g=posts&t=387)


سلام

چجوری میتونم پروسیجری داشته باشم که AND , OR , NOT عبارت مورد جستجو رو هم برگردونه ؟
منظورتون از AND , OR , NOT چیه؟

yavari
شنبه 05 خرداد 1386, 08:39 صبح
سلام

ممنون از توجه تون
مشکل اینجاست که بنا به دلایلی نمی خوام از FTS استفاده کنم ، ممنون میشم با روشی غیر از اون راهنمائی کنید .


منظورتون از AND , OR , NOT چیه؟
دقیقا همون امکانی که تو سلکت اس کیو ال می تونیم داشته باشیم !

ممنون

DonetKarvb
شنبه 05 خرداد 1386, 12:59 عصر
سلام

ممنون از توجه تون
مشکل اینجاست که بنا به دلایلی نمی خوام از FTS استفاده کنم ، ممنون میشم با روشی غیر از اون راهنمائی کنید .
تا جایی که خبر دارم روشی بهتر و مطمئن و سریعتر از FTS برای فیلد های Text وجود نداره.
ولی شیوه های دیگری هم وجود دارد که متداول نیست. مثلا" خودتون دستی کاتولوگی رو که FTS میسازه دستی بسازید. که کاری زمانبر خواهد بود. ولی بازم جواب خواهد داد.

دقیقا همون امکانی که تو سلکت اس کیو ال می تونیم داشته باشیم !

ممنون
یعنی روی فرمتون چندتا CheckBox بذارید و بعد بگید که تیک زدن مشخص کنه که فیلد هایی رو پیدا کنه که این عبارت توشون هست یا نیست ...؟(این روش روبرای Not میشه در نظر گرفت.)
ولی And و OR چطور میتونه باشه؟ (در اینصورت بعید میدونم تعداد فیلد هاتون ثابت باشه؟)

در مجموع همانطور که دوستمون گفتند باید Dynamic T-SQL استفاده کنید. ولی اینکه کلا" دستورتون چطور میشه با توجه به پاسخ دو سوال بنده روشن میشه.

AminSobati
دوشنبه 07 خرداد 1386, 13:37 عصر
یک روش قدیمی این هست که متن مورد نظر رو خرد کنین به کلمات و در جدول جدید ذخیره کنین. مثلا مطلب کد شماره 1، ممکنه صدها رکورد در اون جدول جدید داشته باشه. حالا زمانی که کاربر چند کلید واژه رو به شما میده، اونها رو در یک جدول موقتی قرار بدین و با جدول حاوی لغات Join کنین.