2011-01-18 2 views
6

SQL Server 전체 텍스트 검색을 처음 사용하며 검색 엔진에서 굴절 엔진을 사용하여 여러 단어를 검색하는 가장 좋은 방법을 찾으려고합니다. 모든 단어의 다양한 형태.여러 검색 단어에 대해 CONTAINS, FORMSOF, NEAR를 사용하는 SQL Server 전체 텍스트 검색

내가 읽은 것부터 FREETEXT는 여러 단어와 함께 사용될 때 암시 적 OR을 사용합니다. 검색 결과에 모든 단어가 포함되도록 AND가 필요하므로 여기에 CONTAINS를 사용하도록 선택하고 있습니다.

나는 여러 단어에 근접 키워드 NEAR로 FORMSOF를 사용하는 다음과 같은 쿼리를 수행하려고합니다. 이 유효한 구문은하지 않고 오류 반환합니다 : 작품 아래

select top 5 * 
from content 
WHERE CONTAINS((Title,Subtitle,Body), 'FORMSOF(INFLECTIONAL, model NEAR airplane)') 

그러나 쿼리를하지만 의도 한 결과를 얻을 수 있을지 모르겠어요. SQL 전체 텍스트 검색에서 "AND"와 "NEAR"사이에 차이가 있습니까?

select top 5 * 
from content 
WHERE CONTAINS((Title,Subtitle,Body), 'FORMSOF(INFLECTIONAL, model) AND FORMSOF(INFLECTIONAL, airplane)') 

은 내가이 요구하고있는 무슨, 사용하는 방법이 포함 FORMSOF 및 NEAR 여러 검색 단어를 추측? 아니면 "AND"를 사용하는 위의 두 번째 쿼리를 사용해야합니까? 워드 프로세서

답변

9

는 :

<proximity_term> ::= 
    { <simple_term> | <prefix_term> } 
    { { NEAR | ~ } 
    { <simple_term> | <prefix_term> } 
    } [ ...n ] 

이것은 당신이 (가능한 접두어) 단어, 구문과 조합 NEAR 술어를 사용할 수 있다는 것을 의미합니다.

검색어가 매우 간단한 규칙을 사용하여 굴절되기 때문에, 당신은 그냥 사용할 수있는 접두사 :

SELECT * 
FROM content 
WHERE CONTAINS((Title,Subtitle,Body), 'model* NEAR airplane*') 

또는 AND를 사용하여 클라이언트 측에서 미세 필터링을 할

SELECT * 
FROM ft 
WHERE CONTAINS((Title,Subtitle,Body), 'FORMSOF(INFLECTIONAL, "model") AND FORMSOF(INFLECTIONAL, "airplane")') 
관련 문제