2010-06-22 20 views
6

sto usando SQLServer 2008 e se mi esibisco la seguente query:FREETEXTTABLE ha sempre un rango di 0

SELECT 
    * 
FROM 
    FREETEXTTABLE(SomeTable, Name, 'a name that I know exists') 

ho ottenere le righe schiena che mi sarei aspettato, ma il rango è sempre 0.

ricerca di una soluzione a questo problema, I found this question sul forum di Microsoft ASP.NET, e abbastanza sicuro se aggiungo:

ALTER FULLTEXT CATALOG MyCatalog REBUILD 

vorrei iniziare a fare un rango - ma solo temporaneamente.

Non voglio dover ricostruire il mio catalogo ogni volta che eseguo una ricerca soprattutto quando ho molti dati nel mio database e se lo aggiungo direttamente al mio Sproc prima della query, la mia query non restituisce comunque risultati , presumibilmente perché il catalogo ha finito di essere ricostruito. Sembra che ci siano altre persone che hanno questo e problemi simili ma non sono stato in grado di trovare una soluzione. Qualche idea?

risposta

3

Sono in esecuzione nello stesso problema e currently accepted answer non è una soluzione per me.

Sì, la classifica viene eseguita come indicato da questa risposta, ma non è un motivo per ottenere risultati incoerenti quando è stato a volte dall'ultima ricostruzione del catalogo. La classifica non dovrebbe cambiare radicalmente dopo la ricostruzione e meno ancora alcuni minuti dopo la ricostruzione ...

Per me, c'è un errore nella classifica freetexttable. (Bug, che non influisce containstable classifica: Ho controllato io stesso con il mio proprio catalogo buggy, ed è anche scritto su this Microsoft forum post.)

Da this other Microsoft forum post sembra questo bug si verifica solo nel catalogo avendo solo poche righe indicizzati. L'aggiunta di dati al catalogo fa scomparire il bug.

Così qui è la mia risposta, tratto da Pavel Valenta on yet another Microsoft forum post:

Se il vero e proprio catalogo non ha intenzione di avere più di un paio di centinaia di file indicizzati, aggiungere un po 'tavolo fittizio al tuo catalogo in modo da avere più righe indicizzati.

Ciò non inquinerà i risultati a causa del modo in cui le query vengono create. Sì, questa sembra una soluzione piuttosto strana. Ma questo è l'unico che ha risolto il problema per me.

Un'ultima nota: ho avuto questo problema con sql 2005 sp4, non testato con 2008. (La domanda è per il 2008.)

Problemi correlati