جستجو در سايت با ايندكس سرويس

سلام
من يك صفحه جستجو درست كردم كه با ايندكس سرويس كار ميكنه ولي وقتي فارسي جستجو ميكنم خطا ميگيره The query contained only ignored words
در ضمن كدپيج صفحه را من 1256 گذاشتم و با c# هم برنامم رو نوشتم
 

omidak

Active Member
سلام:
آقا ما به اون سايت رفتيم، خيلي شير تو شير بود. خودت كد كامل رو بزار و بگو از كدوم خط Error میگیره و چه Error ای :wink:
 
سورس

آقا اينم كد
learning اسم كاتالوگم است
CodePage قبلا 1256 بود ولي موقع سرچ فارسي خطا ميگرفت


کد:
<%@ Page Language="C#" CodePage="1200" %>
<%@ import Namespace="System.Data.OleDb" %>
<%@ import Namespace="System.Data" %>
<script runat="server">

    void Page_Load(object sender, EventArgs e) {
    
    
      }
    
      void btnSearch_Click(object sender, EventArgs e) {
    /*      OleDbConnection odbsearch = new OleDbConnection();
          OleDbCommand cmdsearch = new OleDbCommand();
          odbsearch.ConnectionString = "Provider=\"MSIDXS\";Data Source=\"learning\";";
          cmdsearch.Connection = odbsearch;
          cmdsearch.CommandText = "SELECT doctitle,filename,vpath,rank,characterization FROM scope() WHERE FREETEXT(Contents, '"+txtSearch.Text.Trim()+"')ORDER BY rank desc";
          odbsearch.Open();
         OleDbDataAdapter cmd = new OleDbDataAdapter(strQuery, conn);
    
          OleDbDataReader drsearch = cmdsearch.ExecuteReader();
          while (drsearch.Read())
          {
             Response.Write(Convert.ToString(drsearch["doctitle"])+Convert.ToString(drsearch["filename"])+Convert.ToString(drsearch["vpath"])+Convert.ToString(drsearch["rank"])+Convert.ToString(drsearch["characterization"])+"<br>");
          }
    
          odbsearch.Close();
    */
          string strCatalog = "learning";
          string strQuery = "Select DocTitle,vPATH,rank,characterization from Scope()  where FREETEXT(Contents,'" +txtSearch.Text.Trim()+"')ORDER BY rank desc";
    
          string connstring = "Provider=MSIDXS.1;Integrated Security .='';Data Source="+strCatalog;
          System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(connstring);
          conn.Open();
          System.Data.OleDb.OleDbDataAdapter cmd = new System.Data.OleDb.OleDbDataAdapter(strQuery, conn);
          System.Data.DataSet dsSearch = new System.Data.DataSet();
          cmd.Fill(dsSearch, "SearchResults");
          DataView source = new DataView(dsSearch.Tables[0]);
          DataGrid.DataSource = source;
          DataGrid.DataBind();
      }

</script>
<html>
<head>
</head>
<body dir="rtl">
    <form runat="server">
        <table height="150" width="100%" align="center">
            <tbody>
                <tr>
                    <td align="middle">
                        <asp:TextBox id="txtSearch" runat="server"></asp:TextBox>
                    </td>
                </tr>
                <tr>
                    <td align="middle">
                        <asp:Button id="btnSearch" onclick="btnSearch_Click" runat="server" Font-Size="12px" Font-Names="Tahoma" Text="جستجو"></asp:Button>
                    </td>
                </tr>
                <tr>
                    <td>
                        <div align="center">
                            <asp:DataGrid id="DataGrid" runat="server" CellPadding="4" BackColor="White" BorderColor="#3366CC" BorderWidth="1px" BorderStyle="None" Width="100%" AutoGenerateColumns="False">
                                <FooterStyle forecolor="#003399" backcolor="#99CCCC"></FooterStyle>
                                <HeaderStyle font-bold="True" forecolor="#CCCCFF" backcolor="#003399"></HeaderStyle>
                                <PagerStyle horizontalalign="Left" forecolor="#003399" backcolor="#99CCCC" mode="NumericPages"></PagerStyle>
                                <SelectedItemStyle font-bold="True" forecolor="#CCFF99" backcolor="#009999"></SelectedItemStyle>
                                <ItemStyle forecolor="#003399" backcolor="White"></ItemStyle>
                                <Columns>
                                    <asp:BoundColumn DataField="DocTitle" HeaderText="عنوان">
                                        <HeaderStyle font-size="14px" font-names="Tahoma" horizontalalign="Center" width="15%" verticalalign="Middle"></HeaderStyle>
                                        <ItemStyle font-size="12px" font-names="Tahoma" horizontalalign="Center" verticalalign="Top"></ItemStyle>
                                    </asp:BoundColumn>
                                    <asp:BoundColumn DataField="vPATH" HeaderText="آدرس">
                                        <HeaderStyle font-size="14px" font-names="Tahoma" horizontalalign="Center" width="25%" verticalalign="Middle"></HeaderStyle>
                                        <ItemStyle font-size="12px" font-names="Tahoma" horizontalalign="Left" verticalalign="Top"></ItemStyle>
                                    </asp:BoundColumn>
                                    <asp:BoundColumn DataField="rank" HeaderText="انطباق">
                                        <HeaderStyle font-size="14px" font-names="Tahoma" horizontalalign="Center" width="10%" verticalalign="Middle"></HeaderStyle>
                                        <ItemStyle font-size="12px" font-names="Tahoma" horizontalalign="Center" verticalalign="Top"></ItemStyle>
                                    </asp:BoundColumn>
                                    <asp:BoundColumn DataField="characterization" HeaderText="characterization">
                                        <HeaderStyle font-size="14px" font-names="Tahoma" horizontalalign="Center" width="50%" verticalalign="Middle"></HeaderStyle>
                                        <ItemStyle font-size="12px" font-names="Tahoma" horizontalalign="Right" verticalalign="Top"></ItemStyle>
                                    </asp:BoundColumn>
                                </Columns>
                            </asp:DataGrid>
                        </div>
                    </td>
                </tr>
            </tbody>
        </table>
        <!-- Insert content here -->
    </form>
    <div align="center">
    </div>
</body>
</html>
 
آقا اگر تو فيلد كلمه انگليسي تايپ كنم كه مشكلي نيست ولي اگه فارسي تايپ كنم اونوقت خطا ميگيره

The query contained only ignored words
 

omidak

Active Member
سلام:
خوب از كدوم خط مشكل ميگيره؟
اگر ميتونيد كل صفحه Error رو هم بزارید :wink:
 
آقا اينم خطا
[align=left:b6e4ebc5c0]

Server Error in '/vs' Application.
--------------------------------------------------------------------------------

The query contained only ignored words.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.Data.OleDb.OleDbException: The query contained only ignored words.

Source Error:


Line 34: System.Data.OleDb.OleDbDataAdapter cmd = new System.Data.OleDb.OleDbDataAdapter(strQuery, conn);
Line 35: System.Data.DataSet dsSearch = new System.Data.DataSet();
Line 36: cmd.Fill(dsSearch, "SearchResults");
Line 37: DataView source = new DataView(dsSearch.Tables[0]);
Line 38: DataGrid.DataSource = source;


Source File: test1.aspx Line: 36

Stack Trace:


[OleDbException (0x80041605): The query contained only ignored words. ]
System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr) +41
System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) +174
System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) +92
System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) +65
System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) +112
System.Data.OleDb.OleDbCommand.ExecuteReader(CommandBehavior behavior) +68
System.Data.OleDb.OleDbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior) +5
System.Data.Common.DbDataAdapter.FillFromCommand(Object data, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +304
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior) +77
System.Data.Common.DbDataAdapter.Fill(DataSet dataSet, String srcTable) +36
ASP.test1_aspx.btnSearch_Click(Object sender, EventArgs e) in test1.aspx:36
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1277[/align:b6e4ebc5c0]
 

omidak

Active Member
سلام:
کد را به این تبديل كنيد و دوباره انجام بديد:
کد:
      void btnSearch_Click(object sender, EventArgs e) { 
          string strCatalog = "learning"; 
          string strQuery = "Select DocTitle,vPATH,rank,characterization from Scope()  where FREETEXT(Contents,'" +txtSearch.Text.Trim()+"')ORDER BY rank desc"; 
    
          string connstring = "Provider=MSIDXS.1;Integrated Security .='';Data Source="+strCatalog; 
          System.Data.OleDb.OleDbConnection conn = new System.Data.OleDb.OleDbConnection(connstring); 
          try
          {
			conn.Open(); 
			System.Data.OleDb.OleDbDataAdapter cmd = new System.Data.OleDb.OleDbDataAdapter(strQuery, conn); 
			System.Data.DataSet dsSearch = new System.Data.DataSet(); 
			cmd.Fill(dsSearch, "SearchResults"); 
			DataView source = new DataView(dsSearch.Tables[0]); 
			DataGrid.DataSource = source; 
			DataGrid.DataBind(); 
          }
          catch(System.Data.OleDb.OleDbException DE){
			Label1.Text = DE.Message
          }
      }
همچنين يك Label هم اضافه کنید با نام Label1

در ضمن شما خیلی خطا هایه زیادی در برنامه نویسی دارید. اول این مشکلتون رو حل کنید.
بعد براتون توضیح میدم چی کار کنید که خیلی بهتر از Database استفاده کنید :wink:
 
آقا ما مثل شما حرفه اي كه نيستيم بابا
اين كد شما هم تنها مزيتش اينه در try و catch است
كه البته قبول دارم بهتره اينجوري باشه
من منتظر راهنمايي هاي شما هستم
 
اميد جان مشكل من كه با اين كار حل نشد
بازم همان خطا را ميده
The query contained only ignored words
 

omidak

Active Member
سلام:
خوب اين برنامه بهتره كه اين طوري بشه :wink: :
کد:
		void btnSearch_Click(object sender, EventArgs e) { 
			string strCatalog = "learning"; 
			string strQuery = "Select DocTitle,vPATH,rank,characterization from Scope()  where FREETEXT(Contents,'" +txtSearch.Text.Trim()+"')ORDER BY rank desc"; 

			string connstring = "Provider=MSIDXS.1;Integrated Security .='';Data Source="+strCatalog; 
			OleDbConnection conn = new OleDbConnection(connstring); 
			try 
			{ 
				conn.Open(); 
				OleDbCommand Comm = new OleDbCommand(strQuery, conn);
				DataGrid.DataSource = Comm.ExecuteReader();
				DataGrid.DataBind();
				DataGrid.DataSource.Close();
				conn.Close();
			} 
				catch(System.Data.OleDb.OleDbException DE){ 
				Label1.Text = DE.Message 
			} 
		}
اينو اگه ميتوني Database اش رو هم بده من چک اش کنم :wink:
 
كدوم ديتا بيس؟
ديتا بيس كاتالوگ؟ اين برا ايندكس سرويس است ها!!
منظورت رو نفهميدم بيشتر توضيح بده يا يك رفرنس به فارسي يا انگليسي بده
ببين من براي سايتم يك كاتالوگ ساختم در ايندكس سرويس و قبلا با asp بود و كلمات فارسي را هم سرچ ميكرد ولي از وقتي از asp.net استفاده كردم برا فارسي اون خطا رو ميگيره
 

omidak

Active Member
سلام:
راستي اينو كه 1200 كرديد بايد 1200 هم Save بشه ها. :roll:
این کار رو کردید؟ :roll:
 

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

بالا