PDA

View Full Version : مشکل ضعف جستجو در دیتابیس ؟؟!!



peyman13618
سه شنبه 27 آذر 1386, 19:55 عصر
نمیدونم سوالم تکراریه یا نه. چون زیاد سرچ کردم ولی چیزی پیدا نکردم واسه asp.net .
یه جستجو برای یه یانک access گذاشتم تو سایت. خیلی هم ساده است چون زیاد برنامه نویسی بلد نیستم فقط مجبور بودم یه همچین صفحه ای رو ایجاد کنم. مشکل اینجاست که وقتی کسی توی تکست باک موضوع بیشتر از یه کلمه رو بنویسه ،دقیقا همون سرچ میشه و خیلی وقتا میزنه یافت نشد. مثلا "مدیریت" پیدا میشه ولی اگه بزنه " مدیریت های خلاق" چیزی پیدا نمیشه در حالیکه یکی از رکوردها در مورد مدیریت خلاق هستش و " های " اینجا اضافه زده شده.
برای جستجوی بهینه چکار کنم که به این مشکل نخورم و مثلا "های" دیگه تو جستجو نیاد و دوتا کلمه مدیریت و خلاق با هم جستجو بشه. یه چیزی مثل امکان جستجوی ویندوز که هم match case میده هم اینها رو جدا می کنه؟
با "ی" هم مشکل دارم که میگن میشه یه کدی نوشت که اونو به "ی" تبدیل کنه.ممنون میشم اگه راهنماییم کنید.

peyman13618
سه شنبه 27 آذر 1386, 20:03 عصر
این هم کد صفحه جستجو که بالا گفتم. مبتدی و ساده
<body style="background-color:#99ccff;">
<form id="form1" runat="server">
<div style="text-align: center">
<br />
<br />
کلمه مورد نظر شما می تواند بخشی از نام نویسنده،عنوان مقاله و یا سال نشر باشد.<br />
<div lang="fa" dir="rtl">
&nbsp;<asp:TextBox ID="TextBox1" runat="server" dir="rtl" Width="205px" Font-Size="Small" TabIndex="1" Font-Names="arial"></asp:TextBox>&nbsp;<br>
&nbsp;<asp:Button ID="Button1" OnClick="unhide_grid" runat="server" TabIndex="2" Text="جستجو" Font-Size="Small" ToolTip="نویسنده" />&nbsp;
<br /><asp:RequiredFieldValidator
ID="RequiredFieldValidator1" runat="server" ControlToValidate="TextBox1" ErrorMessage="کلمه مورد نظر را وارد کنید"></asp:RequiredFieldValidator><br />
</div>

<div dir="rtl">
&nbsp;
<asp:GridView ID="GridView1" runat="server" AllowPaging="True" AllowSorting="True"
AutoGenerateColumns="False" DataSourceID="newaccess" Font-Size="Small" EmptyDataText="اطلاعات مورد نظر یافت نشد.">
<Columns>
<asp:BoundField DataField="subj" HeaderText="subj" SortExpression="subj" />
<asp:BoundField DataField="auth" HeaderText="auth" SortExpression="auth" />
<asp:BoundField DataField="vol" HeaderText="vol" SortExpression="vol" />
</Columns>
</asp:GridView>
&nbsp;
<asp:AccessDataSource ID="newaccess" runat="server" DataFile="~/App_Data/library.mdb"
SelectCommand="SELECT * FROM [tbl1] WHERE (([auth] LIKE '%' + ? + '%') OR ([subj] LIKE '%' + ? + '%') OR ([vol] LIKE '%' + ? + '%'))">
<SelectParameters>
<asp:ControlParameter ControlID="TextBox1" Name="auth" PropertyName="Text" Type="String" />
<asp:ControlParameter ControlID="TextBox1" Name="subj" PropertyName="Text" Type="String" />
<asp:ControlParameter ControlID="TextBox1" Name="vol" PropertyName="Text" Type="String" />
</SelectParameters>
</asp:AccessDataSource>
</div>
</div>
</form>
</body>

miladr
سه شنبه 27 آذر 1386, 21:42 عصر
تو اکسس نمی دونم میشه یا نه.اما تو sql از index باید استفاده کنی.