7

SQLServer 2008 を使用しており、次のクエリを実行すると:

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

期待どおりの行が返されますが、ランクは常に 0 です。

この問題の解決策を探していたところ、Microsoft ASP.NET フォーラムでこの質問を見つけました。

ALTER FULLTEXT CATALOG MyCatalog REBUILD

ランクを取得し始めますが、一時的なものです。

特にデータベースに大量のデータがあり、クエリの直前に Sproc に追加すると、クエリは結果を返しません。カタログの再構築が完了しました。これと同様の問題を抱えている人が他にもいるようですが、解決策を見つけることができませんでした. 何か案は?

4

2 に答える 2

3

私は同じ問題を抱えていますが、現在受け入れられている回答は解決策ではありません。

はい、この回答で述べたようにランキングが行われますが、最後のカタログの再構築から数回経過した場合に一貫性のない結果が得られる理由にはなりません。ランキングは、再構築時に劇的に変化することはなく、再構築後数分以内であっても...

freetexttable私の場合、ランキングにバグがあります。(ランキングに影響しないバグcontainstable: 私自身のバグ カタログで確認しました。この Microsoft フォーラムの投稿にも記載されています。)

この他の Microsoft フォーラムの投稿から、このバグは、インデックスが作成された行が非常に少ないカタログでのみ発生するようです。カタログにデータを追加すると、バグが消えます。

だから、これが私の答えです。これは、さらに別の Microsoft フォーラムの投稿で Pavel Valentaから取得したものです。

実際のカタログに数百行以上のインデックスが作成されない場合は、ダミー テーブルをカタログに追加して、より多くの行のインデックスを作成します。

クエリの作成方法により、結果が汚染されることはありません。はい、これはかなり奇妙な修正のようです。しかし、それは私にとって問題を解決した唯一のものです。

最後の注意: SQL 2005 SP4 でこの問題が発生しましたが、2008 ではテストされていません。(問題は 2008 のものです)。

于 2012-09-24T14:12:25.290 に答える
1

ランクは、クエリで返される他の結果に対して相対的であるため、返された値からの関連性に基づいて並べ替える場合にのみ役立ちます。ランキング方法の詳しい情報があります。

于 2010-06-22T21:59:32.963 に答える