아래는 FullTextSqlQuery를 이용하고,
검색 범위를 지정하여 해당 범위안에 있는 아이템을 검색하는 소스이다.


string strQuery = string.Empty;
string strkeyword = "Microsoft";

ServerContext context = ServerContext.Current;
FullTextSqlQuery kQuery = new FullTextSqlQuery(context);

strQuery = "SELECT Title, HitHighlightedSummary, Write, ContentClass, Department, IsDocument, Path, Author, Size, SiteTItle FROM Scope() WHERE \"scope\" = 'Search' AND FREETEXT(defaultproperties, '" + strkeyword + "')";
    //Search는 중앙 관리에서 생성한 검색 범위명
    
kQuery.QueryText = strQuery;
kQuery.ResultTypes = ResultType.RelevantResults;
kQuery.StartRow = 0;
kQuery.RowLimit = 50;
kQuery.EnableStemming = true;
kQuery.TrimDuplicates = true;
kQuery.HighlightedSentenceCount = 3;
kQuery.Culture = CultureInfo.CurrentCulture;
kQuery.KeywordInclusion = KeywordInclusion.AllKeywords;
kQuery.Timeout = 60000;
kQuery.AuthenticationType = QueryAuthenticationType.NtAuthenticatedQuery;

ResultTableCollection resultTbls = kQuery.Execute();
if ((int)ResultType.RelevantResults != 0)
{
       ResultTable tblResult = resultTbls[ResultType.RelevantResults];

       DataTable resultDataTable = new DataTable();
       resultDataTable.Load(tblResult, LoadOption.OverwriteChanges);

       gvSearchResult.DataSource = resultDataTable;
       gvSearchResult.DataBind();
}

특정 문서 라이브러리에 대한 리스트 아이템에 대해서 검색하도록 검색 범위를 지정한 후,
해당 문서 라이브러리에 여러 문서를 업로드한다. (이때, 많은 문서를 손쉽게 업로드 하기 위해 원도우 탐색기를 이용하여 업로드 하였다.)
그리고, 크로링 작업을 완료 한 후, 검색을 해보았다.
그런데 이때 위 소스에 Author 부분에 아이템의 작성자가 아닌, 이상한 값들이 있는것을 발견!!!

테스트 해 본 결과!!
원도우 탐색기를 열때, 기존의 인증(시스템 계정)이 물려 있었다.
쿠키 및 캐시 때문인가 싶어 지우고도 다시 해보았으나, 처음에 물려있던 인증창이 한번 물리면 안풀린다
(어떻게 해야 풀리는지 찾지는 못함. 단, 어느정도 시간 지나면 풀림)

우선 일차적인 문제는 시스템 계정 인증 문제였으나,
왜 Author에 시스템 계정으로 나오지 않고, 다른 이름이 나오는가 의문을 갖게 되어 찾아본 결과..

시스템 계정 인증으로 Office를 업로드 한 문서를 검색할 경우, 
해당 Office 문서의 만든이로 Author에 등록되어 나온다는 것을 알았다.
그리고 Office 문서가 아닌 이미지와 같은 파일은 시스템 계정으로 나온다.

인증 문제로 인해 다시 삽질을 하지 말자는 바램으로 정리 해보았다.

+ Recent posts