2016-09-06 4 views
2

SQL Server FREETEXTTABLE을 사용하여 검색 엔진과 같은 사용자 입력 단어를 기반으로 테이블 열을 검색하고 가장 일치하는 행을 반환했습니다.SQL Server FREETEXTTABLE이 결과를 반환하지 않음

테이블 열에는 많은 질문이 포함될 것이며 사용자는 텍스트 상자에 어떤 순서로든 내용을 입력하고 입력 한 내용에 따라 검색 페이지를 자동으로 채워야합니다.

나는 FREETEXTTABLE을 사용했습니다. 그러나 어떤 경우에는 작동하지 않습니다.

'무엇'이라고 입력하면 아무 것도 반환하지 않습니다.

DECLARE @query VARCHAR(50) = 'what' 

SELECT TOP 10 Questions 
FROM tblQuestion tq 
INNER JOIN FREETEXTTABLE(tblQuestion, Questions, @query) ft ON (tq.ID = ft.[Key]) 
ORDER BY ft.Rank DESC 

하지만 '입력란'을 입력하면 10 개의 레코드가 반환됩니다.

DECLARE @query VARCHAR(50) = 'what is' 

SELECT TOP 10 Questions 
FROM tblQuestion tq 
INNER JOIN FREETEXTTABLE(tblQuestion, Questions, @query) ft ON (tq.ID = ft.[Key]) 
ORDER BY ft.Rank DESC 

는 또한 CONTAINSFREETEXT했습니다.

SELECT * 
FROM tblQuestion 
WHERE FREETEXT (Questions, 'what') 

이 쿼리조차도 0 행을 반환했습니다.

그러나이 쿼리는 몇 행을 반환했습니다.

SELECT * 
FROM tblQuestion 
WHERE FREETEXT (Questions, 'what is') 

답변

2

아마도 당신은 아마도 stop lists의 희생자 일 것입니다.

SELECT * FROM sys.dm_fts_index_keywords(DB_ID('YourDB'), OBJECT_ID('tblQuestion')) 

참고 : 확인 모든 단어는 다음 쿼리로 인덱스에 포함 된 불용어는 특정 언어에서 의미있는 단어가 될 수

, 또는 는 않는 토큰 될 수 있습니다 언어 적 의미가 없다. 예를 들어 영어에서 "a", "and", "is"및 "the"는 검색에 쓸모 없기 때문에 전체 텍스트 색인에서 제외 된 입니다.

당신은 모든 단어, 쓸모없는, 사용 다음 코드로 표시 심지어 포함 할 경우

ALTER FULLTEXT INDEX ON tblQuestion SET STOPLIST = OFF 
+0

헤이 파블 퀴닌 감사 남자. 나는 당신에게 주어진 해결책을 구현했다. –