2009-02-27 4 views
0

Ich verwende die FULLTEXT in meiner SQL-Abfrage, um die Datensätze zu durchsuchen.Wie wird zuerst der relevante Datensatz mit FULLTEXT in SQL angezeigt?

 SELECT * FROM (SELECT d.DataId, (SELECT [Name] FROM Category WHERE CategoryId = d.CategoryId) AS 'Category', d.Description, d.CompanyName, d.City, d.CategoryId, 
       d.CreatedOn, d.Rank, d.voteCount, d.commentCount, d.viewCount 
     FROM Data d 
       INNER JOIN Keyword k 
        ON d.DataId = k.DataId 
     WHERE FREETEXT(k.Keyword, @SearchQ) AND [email protected] AND d.IsSearch=1 AND d.IsApproved=1 

Als ich für Rockstone Hotel bin auf der Suche habe ich einen Datensatz mit dem gleichen Namen in meinem Tisch, aber es zeigt einen anderen Datensatz zuerst und zeigt dann „Rockstone Hotel“ Rekord in 3-Position. Warum passiert das und was ist der Weg dies zu verbessern ???

Ich bin mit SQL Server 2005

Dank

Antwort

1

Sie haben keine ORDER BY-Klausel, die die Datenbank freigibt Datensätze in beliebiger Reihenfolge zurückzukehren. Normalerweise ist es die Reihenfolge, in der sie bei der Verarbeitung der where-Klausel auf sie trifft. Daher ist es leicht zu glauben, dass es eine "natürliche" Reihenfolge gibt, die von der Datenbank verwendet wird. Wenn Sie eine spezifische Reihenfolge möchten, müssen Sie entweder eine Order By-Klausel hinzufügen, die eine von Ihnen erstellte Scoring-Methode verwendet, oder Sie müssen sie in dem Programm bestellen, das die Datensätze empfängt.

(. Ich würde raten, dass die andere Datensätze, die Sie ziehen auch die Suchkriterien enthalten, nur weiter in das Textfeld)

Siehe hier für ein Beispiel von Rang mit Ihren Unterlagen bestellen: SQL Server Freetext match - how do I sort by relevance Der Die Rangspalte wird durch den Textanpassungsaufruf generiert.

+0

Können wir die Datensätze auf der Grundlage der Relevanz mit gesuchten Stichwort nicht sortiert werden ?? – Prashant

+0

Ich habe einen Link zu einer vorherigen Frage hinzugefügt, die zeigt, dass Rank verwendet wird. – Godeke