Hi - I'm short of SQL experience and hacking my way through creating a simple search feature for a personal project. I would be very grateful if anyone could help me out with writing a stored procedure. Problem: I have two tables with three columns indexed for full-text search. So far I have been able to successfully execute the following query returning matching row ids: dbo.Search_Articles @searchText varchar(150) AS SELECT ArticleID FROM articles WHERE CONTAINS(Description, @searchText) OR CONTAINS(Title, @searchText) UNION SELECT ArticleID FROM article_pages WHERE CONTAINS(Text, @searchText); RETURN This returns the ArticleID for any articles or article_pages records where there is a text match. I ultimately need the stored procedure to return all columns from the articles table for matches and not just the StoryID. Seems like maybe I should try using some kind of JOIN on the result of the UNION above and the articles table? But I have so far been unable to figure out how to do this as I can't seem to declare a name for the result table of the UNION above. Perhaps there is another more eloquent solution? Thanks! Peter
Our clients want to be able to do full text search with a single letter. (Is the name Newton, Nathan, Nick?, Is the ID N1, N2...). Doing a single character full text search on a table work 25 out of 26 times. The letter that doesn't work is 'n'. the WHERE clause CONTAINS(full_text_field, ' "n*" ') returns all rows, even rows that have no 'n' in them anywhere. Adding a second letter after the "n" works as expected.
Here is an example
create table TestFullTextSearch ( Id int not null, AllText nvarchar(400) ) create unique index test_tfts on TestFullTextSearch(Id); create fulltext catalog ftcat_tfts;
I have a scenario of where the standard Full-Text search identifies keywords but Semantic Search does not recognize them as keywords. I'm hoping to understand why Semantic Search might not recognize them. The context this is being used in medical terminology and the specific key words I noticed missing right off the bat were medications.
For instance, if I put the following string into a FT indexed table
'J9355 - Trastuzumab (Herceptin)' AND 'J9355 - Trastuzumab emtansine'
The Semantic Search recognized 'Herceptin' and 'Emtansine' but not 'Trastuzumab'
Nor in
'J8999 - Everolimus (Afinitor)'
It did not recognize 'Afinitor' as a keyword.
In all cases the Base of Full-Text did find those keywords and were identifiable using the dmvsys.dm_fts_index_keywords_by_document.It does show the index as having completed.
why certain words might not be picked up while others would be? Could it be a language/dictionary issue? I am using English and accent insensitive settings?
would you use sql server "full text search" feature as your site index? from some reason i can't make index server my site search catalog, and i wonder if the full text is the solution. i think that i wll have to you create new table called some thing like "site text" and i will need to write every text twice- one the the table (let's say "articles table") and one to the text. other wise- there is problems finding the right urlof the text, searching different tables with different columns name and so on... so i thought create site search table, with the columns: id, text, url and to write every thing to this table. but some how ot look the wrong way, that every forum post, every article, album picture or joke will insert twice to the sqr server... what do you think?
I have installed the Adobe iFilter 11 64 bit and set the path to the bin folder. I still cannot find any text from the pdf files. I suspect I am missing something trivial because I don't find much when I Bing for this so it must not be a common problem.Here is the code.
--Adobe iFilter 11 64 bit is installed --The Path variable is set to the bin folder for the Adobe iFilter. --SQL Developer version 64 bit on both Windows 7 and Windows 8. USE master; GO DROP DATABASE FileTableStudy; GO CREATE DATABASE FileTableStudy ON PRIMARY
I have a table that contains words that will be used to search another table where FullText index has been created on searchable columns. I'm basically trying to run something like this:
SELECT t1.col1, t2.col3 FROM tbl1 t1, tbl2 t2 WHERE CONTAINS (t1.col1, t2.col1)
I know this won't work but is there a way to join these two tables so the words (t2.col1) can be passed as search conditions? There is no common key on both tables so normal join won't work. I'm trying to find a way to pass the search words from one table to another.
I have Sql server 2005 SP2. I enabled it for Full Text search. Substring search where i enter *word* doesn't return any row. I have a table testtable where description has word Extinguisher.
If i run a query with *ting* it doesn't return any row. select * from testtable where contains(description,'"*xting*"') ;
But it works if i do select * from testtable where contains(description,'"Exting*"') ;
The Full text search document says it supports substring search. Is it an issue with sql server 2005?Please help.
I am using Sql Server 2014 Express edition.I have a table with a varchar(max) column. I have created a full text search that use the stoplist "system". column has this struct: xxx.yyy.zzz.... where xxx, yyy, zzz... are numbers, like 123.345.123123.366456...I can have rows like that:
select * from Mytable where contains(MyColumn, '123.345.')
I gues the contains would return all the rows with column contains 123.345, but this does not return all the expected rows, only one row.I have tried to replace "." with "-" but the result is the same.I have also tried with '123.345.*. In this case I have got more results, but no all the exptected rows.If I use this query:
select * from MyTable where MyCOlumn like '123.345.%';
Can anyone tell me how to search an SQL database for a given key word in a textbox? I basically have a database that has a qualifications column and this column needs to be searched for the data given in the textbox. Which is the best method to search for the data? Is it a simple SQL query or an XML based search engine type? Can anyone give any suggestions regarding this? If XML is efficient then how do I use it to query my database, as I'm pretty new in XML based searching.Thanks
hi there, i am doing a school project and i need to have this search engine that will search the data that i have stored inside the database and display the results out can anyone help? thanks
My site uses a text box to allow visitors to search products. I'm trying to design the SQL Statement to allow search's on full words, part words, and words/phrases regardless of the order the words are in.
E.g. megger meg mft megger (proper order in the database is megger mft) mft1710 (using 1710 should find the product)
This is my select statement (classic ASP)
Code: <% Dim RSResults__param5 RSResults__param5 = "xxx" If (Request("searchme") <> "") Then RSResults__param5 = Request("searchme") End If
Hi guys I need to create an "advanced search" which will allow the user to narrow down his results. Ideally I'd want him/her to use the same search criteria form for each iteration, with a checkbox called "Search within results" type of thing. Now what I was wondering if there was any existing literature on how to effectively do this. I have tried doing it just through SQL Statements but they are becoming very messy and large. Is it possible to do this by searching the initial dataset, returning dataset #2 and then if a 3rd "search within results" is done apply the search against dataset #2 and return dataset #3 etc? Many Thanks John
--set ANSI_NULLS ON --set QUOTED_IDENTIFIER ON --go -- -- --ALTER PROC [dbo].[spEventTagCloud] --as --BEGIN DECLARE @RECORDCOUNT INT; DECLARE @SearchString varchar(2000); DECLARE @QRY VARCHAR(2000); DECLARE @SE VARCHAR(2000); SELECT @RECORDCOUNT=COUNT(*) FROM TBEVENTS DECLARE @ST INT; SET @ST=1; CREATE TABLE #TEMP2 ( MYTAGS VARCHAR(2000) ) --CREATE TABLE #TEMP3 --( -- TAGCOUNT INT --) CREATE TABLE #TEMP1 ( STR1 VARCHAR(2000) ) WHILE @ST<@RECORDCOUNT BEGIN SET @QRY='SELECT TOP ' +CONVERT(VARCHAR,@ST)+' EVENTTAG FROM TBEVENTS' --PRINT @QRY INSERT INTO #TEMP1 EXEC (@QRY) SELECT @SEARCHSTRING=STR1 FROM #TEMP1 SET @ST=@ST+1 declare @i1 int; declare @i2 int; declare @MatchType int ; set @MatchType=0; declare @Word varchar(100); declare @Words table (Word varchar(100) not null); declare @WordCount as integer; DECLARE @TEMPWORD VARCHAR(2000); begin set nocount on if (@MatchType != 2) begin set @SearchString = ' ' + @SearchString + ','; --print 'Search String is :::: '+ @SearchString set @i1 = 1; while (@i1 != 0) begin set @i2=charindex(',', @SearchString, @i1+1) --print @i1 if (@i2 != 0) begin set @Word = rtrim(ltrim(substring(@SearchString, @i1+1, @i2-@i1)))
SET @TEMPWORD=@WORD; SET @TEMPWORD=REPLACE(@TEMPWORD,',','') INSERT INTO #TEMP2 SELECT @TEMPWORD --print 'Search WORD is :::: '+ @WORD
if @Word != '' insert into @Words select replace(@Word,',','') end set @i1 = @i2 end end else insert into @Words select ltrim(rtrim(@SearchString)) set @WordCount = (select count(*) from @Words) Declare @wordtemp varchar(2000); set @wordtemp=@word set @wordtemp=replace(@word,',','') --INSERT INTO #TEMP2 SELECT @WORDtemp END END SELECT mytags'Tag' , count(mytags)'Count' FROM #TEMP2 group by mytags ORDER BY [COUNT] DESC --SELECT * FROM #TEMP1 DROP TABLE #TEMP1 DROP TABLE #TEMP2 --DROP TABLE #TEMP3 --END
________________________________ THE ABOVE EXAMPLE FOR A TAG CLOUD MY TAGS ARE AS FOLLOW
EVENTTAG _________ ASP.NET, C#, VB.NET WELCOME TO ASP.NET ASP.NET BOOKS,C#.NET BOOKS
I WOULD LIKE TO SELECT ALL COLUMNS FROM MY TABLE SEARCH TAG IS ASP.NET THE FOLLOWING CODE WILL GENERATE AND SPLIT IT AS
TAG ____ ASP.NET c# VB.NET WELCOME TO ASP.NET ASP.NET BOOKS C#.NET BOOKS
HOW TO SEARCH AN EXACT MATCH AS ASP.NET THE ONLY ONE ROW
//and i m getting this error Syntax error converting the varchar value 'NPO04/136 ' to a column of data type int. 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.SqlClient.SqlException: Syntax error converting the varchar value 'NPO04/136 ' to a column of data type int. ==================================== can anyone help me in this i m doing a search in a form ( for ex. u search for clientID n it'll come up in search result n once u select that it'll fill in the form) if anyone knw how to do this plz help me. thank u
Protected Sub cmdSelect2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles cmdSelect2.Click Dim sID As String sID = lstResults.SelectedValue Dim iID As Integer ' iID = Int32.Parse(sID) '' If iID > 0 Then Dim selectSQL As String selectSQL = "SELECT * FROM contactinfo " selectSQL &= "WHERE ClientID=@ClientID" Dim cmd As New SqlCommand(selectSQL, conSR) cmd.Parameters.AddWithValue("@ClientID", iID) Dim reader As SqlDataReader
here is my current search i have created which returns values that i want....but my question is there a way to make it search for all related matches??? like lets say i was searching an address and i had "1231 W. Adams" in the table...and i searched by anyone that lived on "Adams" it would pull it up...right now i have to have the exact address in there correctly...any ideas? //create the connection objectSqlConnection myConnection = new SqlConnection(); //set the connection string myConnection.ConnectionString = ConfigurationManager.ConnectionStrings["MRDDstringConnection"].ConnectionString; //open the connection myConnection.Open(); //create a commandSqlCommand myCommand = new SqlCommand(); //VarianceOfUse, Owner, BZA, AND VarianceOfUse.BZAcaseNum = BZA.BZAcaseNum AND Owner.OwnerID = BZA.OwnerID AND Applicant.ApplicantID = BZA.ApplicantID //***set the query text to the name of a stored proceduremyCommand.CommandText = "SELECT * FROM Applicant WHERE Applicant.Line1 = '" + searchTextBox.Text + "'"; //***set the command type, stored proceduremyCommand.CommandType = CommandType.Text; //associate a connection with a command myCommand.Connection = myConnection;SqlDataAdapter myAdapter = new SqlDataAdapter(); //inform the data adapter of the command to execute myAdapter.SelectCommand = myCommand; //4. holds the resultsDataSet myResults = new DataSet(); //execute the query and get results in a table myAdapter.Fill(myResults); //bind to LabelsSearchResults.Visible = true; SearchResults.DataSource = myResults; SearchResults.DataBind(); //6. give back all resources myAdapter.Dispose(); myCommand.Dispose(); myConnection.Dispose();
Hello, I have a search form where i want users to enter a surname into a textbox i then want to retrieve everything from my table patients thats matches this is there away of selecting from a database where Patient surname = textbox1. Thanks Mike
All I have a search screen with 4 possible input boxes name contents start date end date My user needs to be able to use any combination of these to do an sql search and may only use one criteria or all four what is best practice for creating this kind of sql search string in my aspx page thanks gibbo
Does anybody know how i can do a search on my website.I think the problem is that is not understanding the varible.If anyone knows how fix this or do it in a better way, tht would be great<form action="search.aspx" method="post"><input name="txtSearch" type="text" /><input name="btnSearch" type="submit" value="Search" /></form>Dim lookforSub Search_patients lookFor = Request.Form("txtUserName") sel = "SELECT * FROM People WHERE Surname LIKE ' lookfor%'" Dim rs As Object rs = Server.CreateObject("ADODB.recordset") rs.Open(sel, cs) Do Until rs.EOF() For Each x In rs.Fields Response.Write(x.value & "<br />") Next rs.MoveNext() Loop rs.close() rs = Nothing End Sub
I want to implement a search machine on my site. Meaning, you can type some key words in a text field. Every key word has a prefix (+,-, ) that indicates if the word must be present, is optional or is not allowed. How can i build such a query? Can anyone provide me some example query? Many thanks in advance.
I need some tutorial(html link) on how to search data on a db. like taking the string from txt box then transfer it into the sql string. i noticed some of the ppl using "& txt &" and some '%" & Replace(txt, "'", "''") & "%' which 1 to use...vr confusing...i did search on google but what i get is only simple sql tutorial...they didnt give anything like taking a string from keyboard to search..and some source code of searching db using asp.net didnt explained it...:(thats all..thank u!
This is a pure SQL question. But likely most of you guys have encountered before.
I wrote a stored procedure to search classes that matching with the following combined conditions: location, coach, and program name. User may use one or full search conditions. Therefore some input variables for the stored procedure may be empty.
Is there some SQL syntax, operators etc. I can use to modify the following SQL script, so that those empty valued conditions can be ingored when executing SQL script.
Select * From Classes Where Location=@Location and CoachID=@CoachID and ProgramName=@PogramName
Hello, I want to make search function in my webby to find the number of items in the datagrid This is the function in a Class.<code>Public Function RetrieveSearch(ByVal a As String) As DataSetDim myDb As New DatabaseDim cmd As SqlCommandmyDb.OpenConn()Return myDb.GetDataset("SELECT * FROM Table WHERE Title = '%' & a & '%'")myDb.CloseConn()End Function</code>This is the code to store in the datagrid<code>DataGrid1.DataSource = str.RetrieveSearch(TextBox1.Text)DataGrid1.DataBind()</code>I think the sql statement went wrong...Anyone can help me???
I have asp.net C# web application I want to search jobvacancy details using jobrole. if user did not select any value I want to select all the details including null values. this Jobvacancy table has JobRole feild and it allow to insert null values, this is my stored procedure CREATE PROCEDURE JobVacancy(@JobRole varchar (50))as Select NoOfVacancies,JobRole from JobVacancy where JobRole LIKE @JobRole + '%' when I use @JobRole value as '%' then if JobRole feild has null value it did not select.but I want to select all the values including null values. how can I do this?
Can you use a variable with the CONTAINS statement, ie CONTAINS(Search, @SearchCriteria) I can get it to work in when using a word ie CONTAINS(Search, '"computer"') but i want to use this for a search in my asp.net 2.0 application. I have been using Like ie (Search LIKE N'%' + @SearchCriteria + N'%') but this is much slower to return the query results. Thanks
Hi everybody: I have a page that has textboxes in order to take data and search a database. On the initial load the page loads fine with all the records from the data base. However when i try to search out a particular record i recieve an error: The text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator.I don't get this error until I try to input some text in order for it to search for something specifichere is the stack trace:
Stack Trace:
[SqlException (0x80131904): The text, ntext, and image data types cannot be compared or sorted, except when using IS NULL or LIKE operator.] System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) +95 System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) +82 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +346 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +3244 System.Data.SqlClient.SqlDataReader.ConsumeMetaData() +52 System.Data.SqlClient.SqlDataReader.get_MetaData() +130 System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString) +371 System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async) +1121 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result) +334 System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method) +45 System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method) +162 System.Data.SqlClient.SqlCommand.ExecuteReader() +114 PrescriptionProfiler.profileDB.GetProfiles(String rxnumber) in C:Documents and Settings woodard.MSBML_REGGIEMy DocumentsVisual Studio 2005WebSitesWebSite1App_CodeprofileDB.vb:51
here is the code I am using:data in db:"0000000","Reginald","Woodard","Mike Jhana","Tylenol","2001-08-02""1111111","Ronald","Redd","Miles Janson","Alka Seltzer","2001-09-02""2222222","Jameson","Vickers","Mary Sharpe","Aleve","2004-12-31""3333333","Phillip","Brood","Orville Wittaker","Glucophage","2003-08-21"profileDB.vbImports Microsoft.VisualBasicImports System.Data.SqlClientImports System.Collections.GenericImports System.Collections.ObjectModelImports System.DataNamespace PrescriptionProfiler Public Class profileDB Public Sub New() End Sub Public Function GetProfiles(ByVal rxnumber As String) As ICollection(Of prescriptionrecs) ', ByVal startdate As String, ByVal enddate As String) Dim recs As New List(Of prescriptionrecs) Dim myconn As String = ConfigurationManager.ConnectionStrings("MyConn2").ConnectionString Dim dbconn As SqlConnection = New SqlConnection(myconn) Dim mycmd As SqlCommand Dim myreader As SqlDataReader Dim qry As String If Not (rxnumber = String.Empty) Then qry = "SELECT [profiler].[Rx_Num], [profiler].[pat_Fname], [profiler].[pat_Lname], [profiler].[date_Written],[profiler].[doc_name], [profiler].[drug]" & _ "FROM profiler WHERE Rx_Num = @rxnumber" 'AND date_Written between @startdate and @enddate;" Else qry = "SELECT [profiler].[Rx_Num], [profiler].[pat_Fname], [profiler].[pat_Lname], [profiler].[date_Written],[profiler].[doc_name], [profiler].[drug]" & _ "FROM profiler;" End If mycmd = New SqlCommand(qry, dbconn) If Not (rxnumber = String.Empty) Then mycmd.Parameters.Add("@rxnumber", SqlDbType.Text, 50).Value = rxnumber 'mycmd.Parameters.Add("@startdate", SqlDbType.Text, 10).Value = startdate 'mycmd.Parameters.Add("@enddate", SqlDbType.Text, 10).Value = enddate End If 'MsgBox(rxnumber) 'MsgBox(startdate) 'MsgBox(enddate) 'MsgBox(Convert.ToString(mycmd.CommandText)) dbconn.Open() 'Try myreader = mycmd.ExecuteReader() While myreader.Read() recs.Add(New prescriptionrecs(myreader.GetString(0), myreader.GetString(1), myreader.GetString(2), myreader.GetString(3), myreader.GetString(4), myreader.GetString(5))) End While 'Catch ex As Exception 'MsgBox(ex.ToString) 'End Try dbconn.Close() dbconn.Dispose() Return recs End Function End ClassEnd Namespaceprofile.vbImports Microsoft.VisualBasicImports SystemNamespace PrescriptionProfiler Public Class prescriptionrecs Private _Rxnumber As String Private _FirstName As String Private _LastName As String Private _DocName As String Private _date_Written As String Private _Drugs As String Public Sub New() End Sub Public Sub New(ByVal rxnumber As String, ByVal firstname As String, ByVal lastname As String, ByVal date_written As String, ByVal docname As String, ByVal drugs As String) Me.Rxnumber = rxnumber Me.FirstName = firstname Me.LastName = lastname Me.DocName = docname Me.date_Written = date_written Me.Drugs = drugs End Sub Public Property Rxnumber() As String Get Return _Rxnumber End Get Set(ByVal value As String) _Rxnumber = value End Set End Property Public Property FirstName() As String Get Return _FirstName End Get Set(ByVal value As String) _FirstName = value End Set End Property Public Property LastName() As String Get Return _LastName End Get Set(ByVal value As String) _LastName = value End Set End Property Public Property DocName() As String Get Return _DocName End Get Set(ByVal value As String) _DocName = value End Set End Property Public Property date_Written() As String Get Return _date_Written End Get Set(ByVal value As String) _date_Written = value End Set End Property Public Property Drugs() As String Get Return _Drugs End Get Set(ByVal value As String) _Drugs = value End Set End Property End ClassEnd Namespacesearch.aspx.vbImports SystemImports System.DataImports System.ConfigurationImports System.WebImports System.Web.SecurityImports System.Web.UIImports System.Web.UI.WebControlsImports System.Web.UI.WebControls.WebPartsImports System.Web.UI.HtmlControlsImports System.Collections.GenericImports PrescriptionProfilerPartial Class SearchProfiler Inherits System.Web.UI.Page Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load End Sub Protected Sub AddEntry_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles FindEntry.Click Dim obj As New profileDB If Not (Page.IsPostBack) Then obj.GetProfiles(Rx.Text) ', BeginDate.Text, EndDate.Text) MsgBox(Convert.ToString(e)) ProfileGridView.DataBind() End If End SubEnd Class___________________________________________________________________________________________________________I would really appreciate any help with this. thanks