PDA

View Full Version : مشکل با جستجو



pedram_ns
یک شنبه 20 شهریور 1390, 09:39 صبح
دوستان سلام
یک مشکلی برام پیش اومده که نمی دونم اصلا از چیه و باید چطوری حلش کنم؟
من یک فیلد برای جستجو دارم که مقدار اون فیلد با کوری استرینگ به صفحه دیگه ای میره و بر اساس اون اگر چند کلمه باشه تفکیک می شه و بر اساس ترکیب کلمات و دستور and جستجو می کنه.
مثلا اگر کسی کلمه "پوشاک پدرام" رو وارد کنه کوری طوری نوشته میشه که در قسمت job در دیتابیس هم کلمه پدرام و هم کلمه پوشاک باشه.
این کار می کنه ولی نمی دونم چرا با کلمه "املاک" مشکل داره و چیزی رو بر نمی گردونه(مشکل با حروف عربی نیست)
من دو تا رکورد دارم یکی "پوشاک پدرام" و یکی "املاک پدرام":
با پدرام هر دو رو مده - با پوشاک پوشاک پدرام رو میده - با املاک پدرام، املاک پدرام رو میده - با پوشاک پدرام،پوشاک پدرام رو میده ولی با کلمه "املاک" هیچی!!!!!!!!!

No value given for one or more required parameters.



به نظر شما مشکل چیه؟؟؟؟؟؟؟؟؟؟؟؟

Saman Hashemi
یک شنبه 20 شهریور 1390, 10:54 صبح
دوست عزيز كدهاتو قرار بده اينجوري كه نميشه كمك كرد...!

pedram_ns
یک شنبه 20 شهریور 1390, 18:05 عصر
البته امیدوارم سر در بیارید :لبخند:



Dim company As String = Request.QueryString("c")
Dim query As String = ""


Dim companyquery As String = ""
Dim companysplit As String()

If company <> Nothing Then
companysplit = company.Split(" ")

Dim j As Integer = 0
For Each Item As String In companysplit
If Item.Length > 1 Then
If Item = "اداره" Or Item = "سازمان" Or Item = "موسسه" Or Item = "ارگان" Or Item = "شرکت" Or Item = "فروشگاه" Or Item = "مغازه" Or Item = "نمایشگاه" Or Item = "گالری" Or Item = "گروه" Or Item = "ها" Or Item = "های" Or Item = "با" Or Item = "به" Or Item = "در" Then
companyquery += ""
Else
j = j + 1
If j = 6 Then
Exit For
Else
companyquery += "company like '%" + Item + "%' and "
End If
End If
End If
Next

companyquery = companyquery.Substring(0, companyquery.Length - 5)
companyquery = " and " + "(" + companyquery + ")"
Else
companyquery += ""
End If

query = companyquery
query = query.Substring(5, query.Length - 5)

Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|database.mdb")
Dim selectsql As String = String.Format("SELECT * FROM [company] WHERE ({0}) and (date_expiry>=@date_expiry) and (show=@show) ORDER BY [ID] ", query)

Dim cmd As New OleDbCommand(selectsql, con)
cmd.Parameters.AddWithValue("@date_expiry", Date.Today.ToString)
cmd.Parameters.AddWithValue("@show", True)


یه توضیح بدم این مربوط به جستجوی مشاغل هست و چون غیر از مورد نام شرکت (company) موارد دیگری هم داره که همزمان میشه با اون جستجو کرد(مثل نام مدیر شرکت و ...) مجبورم کوریم رو به این صورت بنویسم من فقط بخش مریوط به جستجوی شرکت رو گذاشتم و موارد دیگه هم به این کوری باید اضافه بشه.

بعد از اون مقدار درون فیلد company رو هم تفکیک می کنم و مواردی مثل کلمات "موسسه" "شرکت" و ... رو از اون حذف می کنم و بر اساس اینها جستجو می کنم.

همونطور که در تاپیک قبل هم گفتم فقط با کلمه "املاک" به تنهایی مشکل داره!!!!!!!!

Saber_Fatholahi
یک شنبه 20 شهریور 1390, 19:19 عصر
به نظر من مشکل سر کلمات عربیه
ابتدا وقتی داری ذخیره می کنی از با استفاده از کامپوننت ملی Persia.Net متن خودتو کامل به فارسی تبدیل کن
و در زمان جستجو نیز متن از این تابع که گفتم پاس بده بعد بفرست به اس کیو ال
می تونی از سایت PersiaDevelopers اونو بگیری
موید باشی

pedram_ns
دوشنبه 21 شهریور 1390, 10:13 صبح
نه عزیزم همونطور که گفتم مشکل در کلمات عربی نیست من در هنگام ورود اطلاعات و هنگام جستجو، کلمات عربی رو به فارسی تبدیل می کنم و از این نظر مشکلی ندارم.
اگر اینطور بود با کلمه پوشاک هم که دارای ک هست مشکل ایجاد می کرد.

مشکل از این نیست و نمیدونم از چیه؟؟؟// :گریه:

pedram_ns
سه شنبه 22 شهریور 1390, 08:08 صبح
دیگه نظری نیست؟؟؟

hasti.lm
سه شنبه 22 شهریور 1390, 08:38 صبح
منم با بقیه موافقم مشکل از کلمات عربیه. شاید فقط تو کلمه املاک ک عربیه. باز روشی که تو ÷ست قبل گفته شده رو امتحان کنید.
این لینک رو ببینیدhttp://www.persiadevelopers.com/articles/Persia.NET.aspx