1

最大距離の近接用語を使用して全文検索を作成しようとしています。

グラマーについて私が言えることから...

    <custom_proximity_term> ::= 
  NEAR ( 
     {
        { <simple_term> | <prefix_term> } [ ,…n ]
     |
        ( { <simple_term> | <prefix_term> } [ ,…n ] ) 
      [, <maximum_distance> [, <match_order> ] ]
     }
       ) 

      <maximum_distance> ::= { integer | MAX }
      <match_order> ::= { TRUE | FALSE } 

...次のように使用できるはずですNEAR

'NEAR(term1,term2,5)'

また

'NEAR((term1,term2),5)'

ただし、常に構文エラーがスローされます。

Syntax error near '(' in the full-text search condition 'NEAR((term1, term2), 4, TRUE)'.

Microsoft の例から正確な検索をコピーしようとしても、エラーがスローされます。

USE AdventureWorks2012
GO

SELECT DocumentNode, Title, DocumentSummary
FROM Production.Document AS DocTable 
INNER JOIN CONTAINSTABLE(Production.Document, Document,
  'NEAR(bracket, reflector)' ) /* doesn't like this */ AS KEY_TBL
  ON DocTable.DocumentNode = KEY_TBL.[KEY]
WHERE KEY_TBL.RANK > 50
ORDER BY KEY_TBL.RANK DESC
GO

Syntax error near '(' in the full-text search condition 'NEAR(bracket, reflector)'.
4

1 に答える 1

3

SQL 2012 (デナリ) の場合 - 構文は少しわかりにくいかもしれませんが、文法をよく見ると、 maximum_distance または match_order を使用する場合、用語 (単純/プレフィックス) を追加の括弧で囲む必要があります。

したがって、単純なNEAR検索を行うには、次を使用します-

SELECT * FROM CONTAINSTABLE(Production.Document, Document, 'NEAR(bracket, reflector)')

使用する距離および/または一致順序を制限するには-

SELECT * FROM CONTAINSTABLE(Production.Document, Document, 'NEAR((bracket, reflector), 1, TRUE)')

SQL2008 タグに気付きましたそのリリースでは「NEAR」の扱いが異なります。おそらくそこで使用したいのは、「term1 NEAR term2」です。

于 2012-09-27T21:58:07.537 に答える