% var CommonResultScriptName = "search/common_result.asp"; var SimpleSearchFormName = "sim_form.asp"; // Файл содержит общие для простого и расширенного поиска функции function DoShowSearchResults() { var DocumentArray = Session( "Documents" ); var firstDocumentIndex; if( Request.QueryString( "firstDocument" ).Count == 0 ) firstDocumentIndex = 1; else firstDocumentIndex = Number( Request.QueryString( "firstDocument" ) ); var res = ShowResults( firstDocumentIndex, DocumentArray, CommonResultScriptName ); return res; } function ProcessRepeatSearchForm() { requestString = SmartUpload.Form( "requestStr" ); searchType = Session( "SearchType" ); maxDistance = Session( "MaxDistance" ); order = Session( "Order" ); CommonSearch( requestString, searchType, order, maxDistance ); Server.Execute( CommonResultScriptName ); } function ProcessSimpleSearchForm() { requestString = SmartUpload.Form( "requestStr" ); CommonSearch( requestString, 4, 0, 0 ); Server.Execute( CommonResultScriptName ); } function ProcessAdvancedSearchForm() { var requestString = SmartUpload.Form( "requestStr" ); var searchType; if( SmartUpload.Form( "find_type" ) == "OR" ) searchType = 1; else if( SmartUpload.Form( "find_type" ) == "AND" ) searchType = 2; else if( SmartUpload.Form( "find_type" ) == "LOGICAL" ) searchType = 3; else searchType = 0; var maxDistance = SmartUpload.Form( "maxDistance" ); var order; if( SmartUpload.Form( "order" ) == "ON" ) order = 1; else order = 0; CommonSearch( requestString, searchType, order, maxDistance ); Server.Execute( CommonResultScriptName ); } function AdvSearchDescription( _searchType, _exactWordsOrder, _maxDistance ) { var result; switch( _searchType ) { case 0: result = ExactPhraseDescr; break; case 1: result = AnyWordDescr; break; case 2: result = AllWordsDescr; break; case 3: result = LogacalExpressionDescr; break; default: result = ""; //result = String(_searchType); break; } return result; } function CommonSearch( requestStr, searchType, order, maxDistance ) { if( !Response.IsClientConnected() ) { Server.Execute( SimpleSearchFormName ); return; } Session( "RequestString" ) = "" + requestStr; Session( "SearchType" ) = Number( searchType ); Session( "MaxDistance" ) = Number( maxDistance ); Session( "Order" ) = Number( order ); var documentArray = null; Session( "Documents" ) = documentArray; if( searchType == 4 ) { Session( "RequestDescription" ) = String( SimDescription ); documentArray = SimpleSearch( requestStr ); } else { var paramsDescription = AdvSearchDescription( searchType, order, maxDistance ); //var paramsDescription = String(searchType) + " " + String(order) + " " + String(maxDistance); Session( "RequestDescription" ) = String( paramsDescription ); documentArray = AdvancedSearch( requestStr, searchType, order, maxDistance ); } Session( "Documents" ) = documentArray; } function SimpleSearch( requestStr ) { var result = new Array(); if( requestStr == "" ) return result; var FTREngine = Server.CreateObject( "WebSearch.FTREngineDual" ); var index = FTREngine.OpenIndex( IndexName ); var searchResult = index.Search( requestStr, 0, 0, 0, 0, 0, 0 ); var nDocuments = searchResult.GetDocumentCount(); if( nDocuments == 0 ) { searchResult = index.Search( requestStr, 0, 0, 3, 0, 0, 0 ); nDocuments = searchResult.GetDocumentCount(); } var i; for( i = 0; i < nDocuments; i++ ) result[i] = searchResult.GetDocument( i ); return result; } function AdvancedSearch( requestStr, _searchType, _exactWordsOrder, _maxDistance ) { var result = new Array(); if( requestStr == "" ) return result; var FTREngine = Server.CreateObject( "WebSearch.FTREngineDual" ); var index = FTREngine.OpenIndex( IndexName ); var maxDistance = 0; var exactWordsOrder = 0; var searchFlag; switch( _searchType ) { case 1: searchFlag = 1; break; case 2: searchFlag = 0; maxDistance = _maxDistance; exactWordsOrder = _exactWordsOrder; break; case 3: searchFlag = 4; break; default: // case_0: searchFlag = 0; maxDistance = 1; exactWordsOrder = 1; break; } var searchResult = index.Search( requestStr, 0, 0, searchFlag, maxDistance, exactWordsOrder, 0 ); var nDocuments = searchResult.GetDocumentCount(); var i; for( i = 0; i < nDocuments; i++ ) result[i] = searchResult.GetDocument( i ); return result; } function ShowResults( firstDocumentIndex, DocumentArray, fileName ) { if( !Response.IsClientConnected() ) { return false; } var nDocuments = DocumentArray.length; if( nDocuments == 0 ) { Response.Write( "
" + NotFound + "
\r\n" ); return false; } var lastDocumentIndex = firstDocumentIndex + MaxDocumentCountInPage - 1; if( lastDocumentIndex > nDocuments ) lastDocumentIndex = nDocuments; var leftText = Documents + firstDocumentIndex + "..." + lastDocumentIndex; var rightText = TotalPrompt + nDocuments; // output results WriteResultsBar( leftText, rightText, firstDocumentIndex, fileName, nDocuments ); Response.Write( "\r\n" ); var i; for( i = firstDocumentIndex; i <= lastDocumentIndex; i++ ) WriteDocument( i, DocumentArray ); WriteResultsBar( leftText, rightText, firstDocumentIndex, fileName, nDocuments ); return true; } function WriteDocument( documentIndex, DocumentArray ) { Response.Write( "
\r\n" );
Response.Write( documentIndex + ". " );
var document = DocumentArray[documentIndex - 1];
var targetString = " ";
if( OpenResultInSeparateWindow ) {
targetString = " TARGET=\"_blank\" ";
}
var docURLAddress = document.Name;
var documentTitle = GetDocTitle( document.Description );
if( documentTitle != 0 ) {
var referenceToDocName = "" + documentTitle + "
\r\n";
Response.Write( referenceToDocName );
} else {
Response.Write( "
" );
}
var documentDescription = GetDocDescription( document.Description );
documentDescription += "\r\n";
Response.Write( documentDescription );
var referenceToFile = "" + docURLAddress + "
\r\n";
Response.Write( referenceToFile );
Response.Write( "
" ); Response.Write( leftText ); Response.Write( " | " );
Response.Write( "" ); WriteReferencesToOtherResults( firstDocumentIndex, show_result, nDocuments ); Response.Write( " | " ); Response.Write( "" ); Response.Write( rightText ); Response.Write( " | " );
Response.Write( "
\r\n"; if( (referenceToPrevPagesGroup = ReferenceToPreviousPagesGroup( firstDocumentIndex, show_result, nDocuments )) != 0 ) { centerText += referenceToPrevPagesGroup; centerText += " \r\n"; } if( (referencesToOtherPages = ReferencesToOtherPagesInPagesGroup( firstDocumentIndex, show_result, nDocuments )) != 0 ) { var i; for( i = 0; i < referencesToOtherPages.length; i++ ) { centerText += referencesToOtherPages[i]; if( i < referencesToOtherPages.length - 1 ) centerText += " "; centerText += "\r\n"; } } if( (referenceToNextPagesGroup = ReferenceToNextPagesGroup( firstDocumentIndex, show_result, nDocuments )) != 0 ) { centerText += " "; centerText += referenceToNextPagesGroup + "\r\n"; } centerText += "
\r\n