PDA

View Full Version : مشکل در استفاده از fulltext search



saeed_programer
پنج شنبه 29 بهمن 1383, 11:51 صبح
سلام
من یک سیستم جستجوی درون مقاله ای درست کردم که درون مقالاه را با استفاده از ful text جستجو میکنه ولی یک مشکل برام ایجاد شده وآن هم اینه که نمی تونم کلمات مرکب را جستجو کنم

sp من این
ه

procedure art_context_ser @word nvarchar(50),@kind smallint,@datef int,@datee int
as


if (@kind<>-1)
select top 100 context,header,id,c from tbl_article where (contains (context ,@word) and kind=@kind) and (_date>=@datef and _date<=@datee)
else
select top 100 context,header,id,c from tbl_article where (contains (context ,@word))and(_date>=@datef and _date<=@datee)





و همچنین اینگونه جستجو میکنم



exec dbo.art_context_ser 'هسته ای',-1,13830101,13831229



و همچنین error که میده اینه


Server: Msg 7631, Level 15, State 1, Procedure art_context_ser, Line 14
Syntax error occurred near 'ای'. Expected ''''' in search condition 'هسته ای'.

AminSobati
پنج شنبه 29 بهمن 1383, 23:50 عصر
دوست عزیزم،
برای این حالت، میبایست String مورد نظر رو داخل " هم قرار بدین. مثلا:

select * from tbl_article where contains(context,N'"هسته ای"')

saeed_programer
دوشنبه 03 اسفند 1383, 10:50 صبح
ممنون راه گشا بود.

AminSobati
دوشنبه 03 اسفند 1383, 22:13 عصر
موفق باشید :)

zrahimic
سه شنبه 04 اسفند 1383, 16:00 عصر
سلام

در پایگاه داده ای که من استفاده می کنم فیلدها از نوع ntext تعریف شده. ورودی های search را در فرم از طریق textbox می گیرم و جستجو می کنم. مشکلی که وجود دارد اینه که اگر کاربر یک عدد یک رقمی را بعنوان ورودی وارد کند error می دهد.
مثلا کوئری که می سازم به صورت زیر است:



Select * from table1 where contains(Text,N'"1"')


این خطا موقع اجرای کوئری رخ می دهد.


System.Data.SqlClient.SqlException: A clause of the query contained only ignored words


کسی میدونه چرا؟ :گیج:

AminSobati
چهارشنبه 05 اسفند 1383, 18:04 عصر
دوست عزیزم،
بعضی از لغات اصطلاحا Noise Word محسوب میشن و در Full Text Search به عنوان Result ظاهر نمیشن، مثلا: And, Or, You, Is, But, Can, Some
همچنین اعداد به صورت تک کاراکتری هم Noise Word هستند ولی عددی مثل 12 رو Noise محسوب نمیکنه.
زمانی که چیزی رو Search میکنین، باید اقلا یکی از عباراتش غیر از Noise Word باشه. در مثالی که زدین، چون فقط 1 رو وارد کردین، این Noise به حساب میاد

zrahimic
پنج شنبه 06 اسفند 1383, 11:34 صبح
ممنون

پس من یک حرف به کلمات تک حرفی اضافه می کنم. :wink: