Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
Home
Discussion Groups
DB Engine
SQL ServerMSDESQL Server CE
Services
Analysis (Data Mining)Analysis (OLAP)DTSIntegration ServicesNotification ServicesReporting Services
Programming
CLRConnectivitySQLXML
Other Technologies
ClusteringEnglish QueryFull-Text SearchReplicationService Broker
General
Data WarehousingPerformanceSecuritySetupSQL Server ToolsOther SQL Server Topics
DirectoryUser Groups
Related Topics
MS AccessOther DB ProductsMS Server Products.NET DevelopmentVB DevelopmentJava DevelopmentMore Topics ...

SQL Server Forum / Other Technologies / Full-Text Search / July 2004

Tip: Looking for answers? Try searching our database.

FREETEXTTABLE

Thread view: 
Enable EMail Alerts  Start New Thread
Thread rating: 
shank - 02 Jul 2004 18:40 GMT
The following FREETEXTTABLE query works, but I'm getting all rows returned.
The highest ranked are
at the top like expected, but it's also returning all rows in the Stock
table that have no match whatsoever. In my FREETEXT query (bottom), all the
results
had a match. I don't get the concept of the FREETEXTTABLE. In my mind, I'm
expecting a temp table to be created with the results. However, the code
below is actually joining the created table. I don't get it.

How do I get only matching results in the FREETEXTTABLE?
thanks!

------------------------------------------------------
-- This FREETEXTABLE query returns all row in the Stock table. Regardless of
any matches.

DECLARE @SearchCriteria varchar(100)
SET @SearchCriteria = 'midler'
SELECT
            Stock.OrderNo,
            Stock.Description,
            Stock.Category,
            Stock.s_Type,
            Stock.Manuf,
            Stock.Label,
            Titles.Title,
            Titles.Artist,
            Hardware.m_Specs,
            Stock.ManCode
FROM
            Stock
            LEFT OUTER JOIN Titles ON Stock.OrderNo = Titles.OrderNo
            LEFT OUTER JOIN Hardware ON Stock.OrderNo = Hardware.OrderNo
            LEFT OUTER JOIN FREETEXTTABLE(Stock, *, @SearchCriteria) AS
FS_TABLE ON FS_TABLE.[KEY] = Stock.OrderNo
ORDER BY
            FS_TABLE.Rank DESC
------------------------------------------------------
--This FREETEXT query works as expected

DECLARE @SearchCriteria varchar(100)
SET @SearchCriteria = ' "midler" '
SELECT Stock.OrderNo, Stock.Description, Stock.Category,
Stock.s_Type, Stock.Manuf, Stock.Label, Titles.Title,
Titles.Artist, Hardware.m_Specs, Stock.ManCode
FROM Stock LEFT OUTER JOIN
Titles ON Stock.OrderNo = Titles.OrderNo LEFT OUTER JOIN
Hardware ON Stock.OrderNo = Hardware.OrderNo
WHERE   FREETEXT(Stock.OrderNo,@SearchCriteria) OR
FREETEXT(Stock.Description,@SearchCriteria) OR
FREETEXT(Stock.Category,@SearchCriteria) OR
FREETEXT(Stock.s_Type,@SearchCriteria) OR
FREETEXT(Stock.Manuf,@SearchCriteria) OR
FREETEXT(Stock.Label,@SearchCriteria) OR
FREETEXT(Stock.ManCode,@SearchCriteria) OR
FREETEXT(Hardware.m_Specs,@SearchCriteria) OR
FREETEXT(Titles.Title,@SearchCriteria) OR
FREETEXT(Titles.Artist,@SearchCriteria)
Brien King - 03 Jul 2004 13:39 GMT
FREETEXTTABLE returns a table of all the keys and their ranking for your
search.  Based on what you are saying, I am guessing that it also returns
items that don't match and they probably have a ranking of 0.

So you can filter out those by adding a WHERE clause like this:

WHERE
   FS_TABLE.RANK > 0

For me, I use where it's greater than 20 since I only care about the 80%
that are relevant (in my case).

Hope that helps.

Brien King

> The following FREETEXTTABLE query works, but I'm getting all rows returned.
> The highest ranked are
[quoted text clipped - 33 lines]
>  ORDER BY
>              FS_TABLE.Rank DESC
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2009 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.