SourceOne Email Management : WebSearch peut ne pas renvoyer un ensemble complet de résultats de recherche
Summary: WebSearch peut ne pas renvoyer un ensemble complet de résultats de recherche.
Symptoms
Lors d’une recherche d’index en texte intégral, il se peut que tous les résultats ne soient pas validés dans la base de données SourceOne Search. Par conséquent, les résultats de la recherche peuvent être incomplets.
Ce problème peut ne pas affecter toutes les recherches. L’apparition de ce problème dépend de l’existence de messages dupliqués dans l’index de texte intégral et de l’ordre dans lequel ces résultats sont renvoyés. Ce problème est plus susceptible de se produire sur les systèmes où :
- Des éléments en double existent dans l’index de texte intégral
- L’option MaxSearchHitsThreads a été activée
- Il existe des archives de migration sur place où les données de plusieurs serveurs EmailXtender ont été migrées dans un seul dossier mappé SourceOne.
Cause
Resolution
Dell EMC recommande aux clients d’appliquer l’un des correctifs SourceOne Email Management suivants pour la version 7.2 installée :
7.2 SP6 HF4 (7.2.6.6229)
7.2 SP7 ou version ultérieure
Les téléchargements sont disponibles sur la page produit SourceOne Email Management à l’adresse : http://support.emc.com
Une fois qu’une version de SourceOne Email Management avec le correctif est installée, toutes les recherches futures sont censées se terminer avec tous les résultats. Toutes les recherches effectuées lors de l’exécution d’une version affectée devront être réexécutées pour garantir l’exhaustivité des résultats.
Dans la version 7.2.8 de SourceOne Email Management, il peut être possible d’identifier les ensembles d’index qui ont du contenu en double ou des « éléments supplémentaires » via la validation d’index. Ces résultats de validation peuvent être utilisés pour identifier les recherches qui doivent être exécutées à nouveau. Effectuez les opérations suivantes :
Tout d’abord, configurez l’analyse de validation d’index à l’aide du Mode 2 ou supérieur. La validation d’index signale les jeux d’index problématiques par un point d’exclamation jaune ( !) et l’index est à l’état « Extra Items ». Si des analyses ont été exécutées sur une version précédente, une nouvelle analyse peut être exécutée dans la console SourceOne Email Management en cliquant avec le bouton droit de la souris sur chaque dossier AAAAMM et en sélectionnant « Relancer l’analyse ». Une fois les analyses terminées, tous les index dont l’état est « Extra Items » doivent être reconstruits avec succès avant que les recherches sur le Web SourceOne concernées ne soient réexécutées.
Les étapes suivantes consistent à identifier toutes les recherches Web SourceOne potentielles qui ont été précédemment exécutées et qui auraient potentiellement effectué une recherche dans un ensemble d’index de problèmes.
NOTE: Les requêtes SQL ci-dessous supposent que le nom des bases de données SourceOne est par défaut. Si ce n’est pas le cas, la requête doit être modifiée avec le nom correct des noms de base de données SourceOne.
Tout d’abord, pour identifier les recherches sur le Web SourceOne précédemment exécutées au moment de ce problème, exécutez les requêtes SQL suivantes :
1. Exécutez la requête suivante pour capturer la date d’installation et les dates de mise à niveau de l’environnement SourceOne :
use ES1Archive
select EndTime into #TEMP from [DBMaintenanceHistory] where (version >=7 and version <7.27000) and Description = 'SourceOne Archive database update complete'
insert into #TEMP select EndTime from [DBMaintenanceHistory] where Description = 'New SourceOne Native Archive database created' and Version >=7 and Version < 7.27000
GO
2. Exécutez la requête suivante pour rassembler toutes les informations sur les recherches Web SourceOne exécutées en fonction des dates récupérées à l’étape 1 :
use ES1Activity;
with cte as(
select ActivityID as activityid,TaskTypeID,Name as SearchName,search.value('(@searchOperation)[1]','varchar(max)') as operation, search.value('(.)[1]','varchar(max)') as daterange,
xConfig.value('(/SearchJobConfig/QueryString/SearchCriteria/@displayName)[1]','nvarchar(max)') as SearchUser from Activity
cross apply xConfig.nodes('/SearchJobConfig/QueryString/SearchCriteria/ExpressionSet/SimpleAttributeExpression') as ref(search)
where xConfig is not null --and --TaskTypeID = 8
and search.value('(@displayName)[1]','varchar(max)') = 'Date')
select activityid,TaskTypeID,SearchUser,SearchName, 'StartDate' = Replace(CASE
WHEN min(daterange) = max(daterange) THEN 'ALL'
ELSE min(daterange) END,'T',' '), 'EndDate' = Replace(CASE
WHEN min(daterange) = max(daterange) THEN 'ALL'
ELSE max(daterange) END,'T',' ') into #SearchDates from cte
group by activityid,TaskTypeID,SearchUser,SearchName
3. Exécutez la requête suivante pour générer toutes les informations concernant les recherches susceptibles d’être affectées. Le résultat comprendra des informations de base sur SourceOne Web Search, notamment :
| Nom de la recherche : | Nom de la recherche tel qu’il apparaît dans la fenêtre SourceOne Email Management Console\Operations\Job Management. |
| ID de tâche : | Valeur JobID trouvée dans les fenêtres Job Management de la console SourceOne Email Management. |
| Heure de début : | Date/heure d’exécution de la recherche. |
| Search Start\End Date : | Critère de date utilisé dans la recherche. Si aucun champ Date n’a été utilisé dans la recherche, TOUTES les dates ont été recherchées. |
| Utilisateur exécutant : | L’utilisateur qui a créé et exécuté la recherche. |
use ES1Activity
select distinct A.Name as SearchName,J.JobID,A.StartTime,S.StartDate as [Search Start Date],
S.EndDate as [Search End Date], S.SearchUser as [Executing User] from Activity A
join Tasks T on A.ActivityID = T.ActivityID
join Jobs J on T.TaskID = J.TaskID
join #SearchDates S on (S.ActivityID = A.ActivityID)
where A.TaskTypeID =8 and A.StartTime > (select min(EndTime) from #TEMP) and A.StartTime < (select max(EndTime)from #TEMP)
order by A.StartTime
GO
drop table #TEMP
drop table #SearchDates
GO
Remarque : Ne passez aux étapes suivantes qu’une fois la validation de l’index terminée.
Ensuite, pour identifier les ensembles d’index SourceOne problématiques et leurs états, exécutez les requêtes SQL suivantes :
1. Exécutez la requête suivante pour capturer la date d’installation et les dates de mise à niveau de l’environnement SourceOne :
use ES1Archive
select EndTime into #TEMP from [DBMaintenanceHistory] where (version >=7 and version <7.27000) and Description = 'SourceOne Archive database update complete'
insert into #TEMP select EndTime from [DBMaintenanceHistory] where Description = 'New SourceOne Native Archive database created' and Version >=7 and Version < 7.27000
GO
2. Exécutez la requête suivante pour capturer tous les index SourceOne qui ont été, à tout moment, marqués comme « Éléments supplémentaires » :
use ES1Archive
select WorkID,CmdType,cast(CmdParam as XML).value('(/WQ_Parms/WQ_FolderId/node()) [1]', 'bigint') as FolderID,cast(CmdParam as XML).value('(/WQ_Parms/WQ_FldrPath/node()) [1]', 'nvarchar(max)') as [Archive_Index Path],LastModified as ScanDate, SUBSTRING(ResultStr,(CHARINDEX( 'indexflags(', ResultStr, 0)+11),(CHARINDEX( ')', ResultStr, (CHARINDEX( 'indexflags(', ResultStr, 0)+11) )-(CHARINDEX( 'indexflags(', ResultStr, 0)+11))) as ResultStr,'Result' = CAST('Extra Items' as varchar(50))
into #ExtraItems
from WorkQueue
where CmdType =17 and (CHARINDEX( 'indexflags(', ResultStr, 0) > 0 and (CAST(SUBSTRING(ResultStr,(CHARINDEX( 'indexflags(', ResultStr, 0)+11),(CHARINDEX( ')', ResultStr, (CHARINDEX( 'indexflags(', ResultStr, 0)+11) )-(CHARINDEX( 'indexflags(', ResultStr, 0)+11))) as bigint) & CAST( 65536 as bigint) ) > 0)
GO
3. Exécutez la requête suivante pour capturer tous les index SourceOne qui ont été reconstruits au moment du problème :
use ES1Archiveselect WorkID,CmdType,cast(replace(replace(CmdParam,'<WQ_Parms><WQ_FldrPath>',''),'</WQ_FldrPath></WQ_Parms>','') as nvarchar(max)) as [Archive_Index Path], min(LastModified) as [Rebuild Date], 'Result' = CASE WHEN CmdType=1 THEN 'Rebuilt' ELSE 'Unknown' END into #Rebuilt from WorkQueue (nolock) where CmdType = 1 and (LastModified >= (select min(EndTime) from #TEMP) and LastModified < (select max(EndTime) from #TEMP))group by WorkID,CmdParam,CmdType order by CmdParam,CmdTypeGOupdate #Rebuilt set [Archive_Index Path] = replace([Archive_Index Path],char(13),'')update #Rebuilt set [Archive_Index Path] = replace([Archive_Index Path],char(10),'')GOset IDENTITY_Insert #ExtraItems ONinsert into #ExtraItems (WorkID,CmdType,[Archive_Index Path],ScanDate,Result)select * from #Rebuilt where NOT EXISTS(select * from #ExtraItems where #ExtraItems.[Archive_Index Path] = #Rebuilt.[Archive_Index Path])GO
4. Exécutez la requête suivante pour capturer tous les index SourceOne dont la validation a échoué ou qui ont été manqués pendant le processus de validation de l’index après la mise à niveau vers SourceOne 7.2 SP8 :
use ES1Archive
select replace(FP.path,'\FPROOT\','') + CASE
WHEN LEN(FT.IndexNum) = 1 THEN ('00' + CAST(FT.IndexNum AS VarChar(20)))
WHEN LEN(FT.IndexNum) = 2 THEN ('0' + CAST(FT.IndexNum AS varchar(20)))
WHEN LEN(FT.IndexNum) = 3 THEN CAST(FT.IndexNum AS varchar(20)) END as [Archive_Index Path] into #IndexList
from FTIndex FT
join FolderPlan FP on FT.FolderNodeID = FP.FolderID
EXCEPT
select replace(FP.path,'\FPROOT\','') + CASE
WHEN LEN(FT.IndexNum) = 1 THEN ('00' + CAST(FT.IndexNum AS VarChar(20)))
WHEN LEN(FT.IndexNum) = 2 THEN ('0' + CAST(FT.IndexNum AS varchar(20)))
WHEN LEN(FT.IndexNum) = 3 THEN CAST(FT.IndexNum AS varchar(20)) END as [Archive_Index Path]
from FTIndex FT
join FolderPlan FP on FT.FolderNodeID = FP.FolderID
where (FT.LastScanDate > (select Max(Date) from DBMaintenanceHistory where Description = 'SourceOne Archive database update complete' and Version > 7.27))
GO
set IDENTITY_Insert #ExtraItems ON
insert into #ExtraItems (WorkID,CmdType,[Archive_Index Path],Result)
select '0','17',[Archive_Index Path],'Result'='Not-Validated' from #IndexList
WHERE NOT EXISTS (select * from #ExtraItems where #ExtraItems.[Archive_Index Path] = #IndexList.[Archive_Index Path])
GO
5. L’exécution de cette dernière requête produira tous les index SourceOne potentiellement affectés. Toutes les recherches effectuées sur des index marqués comme « Éléments supplémentaires » doivent être réexécutées pour obtenir les résultats corrects. Toutes les recherches effectuées sur des index « reconstruits » devront peut-être être réexécutées, car la reconstruction d’un index aurait été résolue, mais cela dépend du moment où la recherche a été exécutée sur l’ensemble d’index reconstruit.
select WorkID,[Archive_Index Path],ScanDate as Date,Result from #ExtraItems where Result !='Validated'
GO
drop table #TEMP
drop table #Rebuilt
drop table #ExtraItems
drop table #IndexList
GO
Additional Information
| https://downloads.dell.com/TranslatedPDF/PT-BR_KB535700.pdf |
| https://downloads.dell.com/TranslatedPDF/ZH-CN_KB535700.pdf |
| https://downloads.dell.com/TranslatedPDF/ES_KB535700.pdf |
| https://downloads.dell.com/TranslatedPDF/DE_KB535700.pdf |
| https://downloads.dell.com/TranslatedPDF/FR_KB535700.pdf |
| https://downloads.dell.com/TranslatedPDF/IT_KB535700.pdf |
| https://downloads.dell.com/TranslatedPDF/JA_KB535700.pdf |
| https://downloads.dell.com/TranslatedPDF/NL_KB535700.pdf |
| https://downloads.dell.com/TranslatedPDF/KO_KB535700.pdf |
| https://downloads.dell.com/TranslatedPDF/RU_KB535700.pdf |
| https://downloads.dell.com/TranslatedPDF/PT_KB535700.pdf |
| https://downloads.dell.com/TranslatedPDF/SV_KB535700.pdf |