SourceOne Email Management:WebSearch 可能不会返回一组完整的搜索结果
Summary: WebSearch 可能不会返回一组完整的搜索结果。
Symptoms
在全文索引搜索期间,可能不会将所有结果都提交到 SourceOne Search 数据库。因此,搜索结果可能不完整。
此问题可能不会影响每次搜索。此问题的发生将取决于全文索引中是否存在重复邮件以及返回这些结果的顺序。此问题更有可能发生在以下系统上:
- 全文索引中存在重复的项目
- MaxSearchHitsThreads 选项已启用
- 存在就地迁移归档,其中来自多个 EmailXtender 服务器的数据被迁移到单个 SourceOne 映射文件夹中。
Cause
Resolution
Dell EMC 建议客户为安装的 7.2 版本应用以下 SourceOne Email Management 修补程序之一:
7.2 SP6 HF4 (7.2.6.6229)
7.2 SP7 或更高版本
可在 SourceOne Email Management 产品页面上进行下载,网址为:http://support.emc.com
安装具有修复的 SourceOne Email Management 版本后,所有未来的搜索都应完成并显示所有结果。 在运行受影响的版本时执行的任何搜索都需要再次执行,以保证结果的完整性。
在 SourceOne Email Management 版本 7.2.8 中,可以通过“索引验证”确定哪些索引集具有重复内容或“额外项目”内容。这些验证结果可用于确定哪些搜索需要重新运行。执行以下步骤:
首先,使用模式 2 或更高版本配置索引验证扫描。索引验证将使用黄色感叹号 (!) 标记有问题的索引集,并且索引的状态将为“Extra Items”。 如果已在以前的版本上运行扫描,则可以在 SourceOne Email Management 控制台中执行重新扫描,方法是右键单击每个 YYYYMM 文件夹并选择“重新扫描”。 扫描完成后,必须成功重建状态为“Extra Items”的所有索引,然后才能重新运行任何受影响的 SourceOne Web Search。
接下来的步骤是识别之前运行的、可能跨问题索引集进行搜索的任何潜在 SourceOne Web 搜索。
注意:下面的 SQL 查询假定 SourceOne 数据库的名称是默认的。如果不是,则需要使用 SourceOne 数据库名称的正确名称修改查询。
首先,要识别出现此问题时以前运行的任何过去的 SourceOne Web 搜索,请执行以下 SQL 查询:
1.运行以下查询以获取 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.运行以下查询以收集基于步骤 1 中检索到的日期运行的 SourceOne Web 搜索的所有信息:
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.运行以下查询以输出有关可能受影响的搜索的所有信息。输出将包括有关 SourceOne Web Search 的基本信息,包括:
| SearchName: | 在 SourceOne Email Management Console\Operations\Job Management 窗口中显示的搜索名称。 |
| 作业 ID: | 在 SourceOne Email Management Console 的Job Management窗口中找到的 JobID 值。 |
| 开始时间: | 执行搜索的日期\时间。 |
| 搜索开始\结束日期: | 搜索中使用的日期条件。如果搜索中未使用日期字段,则搜索所有日期。 |
| Executing user: | 创建并运行搜索的用户。 |
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
提醒:仅在完成索引验证后才继续执行以下步骤。
接下来,要识别有问题的 SourceOne 索引集及其状态,请执行以下 SQL 查询:
1.运行以下查询以获取 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.执行以下查询以在任何时候捕获标记为“Extra Items”的任何 SourceOne 索引:
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.执行以下查询以捕获在问题发生期间已重建的任何 SourceOne 索引:
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.在升级到 SourceOne 7.2 SP8 后的索引验证过程中,执行以下查询以捕获验证失败或缺失的任何 SourceOne 索引:
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.执行此最终查询将输出所有可能受影响的 SourceOne 索引。任何针对被标记为“额外项目”的索引运行的搜索都需要重新执行才能获得正确的结果。针对“重新生成”的索引运行的任何搜索都可能需要重新执行,因为索引的重新生成已经解决,但取决于针对重建的索引集运行搜索的时间。
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 |