sql >> Database >  >> RDS >> Sqlserver

Gemengde zoekopdrachten tegen volledige-tekstindex

Ik denk niet dat je een probleem zou moeten ervaren, als ik je vraag goed begrijp. Ik combineer vaak full-text en b-tree met mooie resultaten. Wanneer de volledige tekst wordt doorzocht, wordt elke "term" met scheidingstekens als een index bekeken, net zoals een geïndexeerde kolom met slechts één term (sommige sql-statistieken geven of nemen). Hoe dan ook, SQL moet het uitvoeringspad achterhalen. Zoeken in volledige tekst geeft geen voorkeur aan het vergelijken van waarden voor gehele getallen/datums - meer voor het matchen van reeksen van gescheiden gegevens.

Ik kan me voorstellen dat je de efficiëntie van het b-tree concept in je voordeel wilt blijven gebruiken. Het zoeken in de volledige-tekstcatalogusindex lijkt mij een veel meer omslachtige zoekactie, hoewel veel voordeliger in situaties waarin "LIKE" wordt gebruikt om strings te ontleden/vergelijken.

Wat ik doe is:

 SELECT * FROM MyTable
  WHERE CONTAINS(columnName, '"Toy Dog" OR "live animal"')
    AND start_date > ###;

(zie dit msdn-artikel voor syntaxisinfo )

PS bij het indexeren van integere gegevens in volledige tekst, schakelt u de stoplijst uit, zodat deze waarden niet worden genegeerd in de catalogusindexering.

Hoop dat iets van dat helpt! (Niemand heeft geantwoord, dus ik dacht ik geef mijn ervaring)




  1. Wat is een opgeslagen procedure met een hangslotpictogram in SQL Server 2005?

  2. DATEPART() Voorbeelden in SQL Server

  3. Hoe kan ik breeklijnen in mysql-records opnemen?

  4. MySQL GROUP DOOR... HAVE verschillende waarden hetzelfde veld