症状:
索引如有字段无(一)数据,索引过程异常
原因:
如该字段有数据,在索引中会生成norm文件_b.nm文件,b为索引桶序号,m为字段序号
合并过程中会打开该文件,写入临时文件_mid_0_0.nm(m为字段序号)
由于索引过程中自始至终无数据加入该字段,索引该_b.nm文件不存在,打开失败导致异常
代码段如下:
name = pEntry->m_pBarrelInfo->getName() + _T(".n");
name = FX_NS(string_utils)::append(name,fid);
IndexInput* pNormsReader = m_pDirectory->openInput(name);//此处打开失败
FSIndexInput::FSIndexInput(const tchar* filename)
{
m_fileHandle = ::fileOpen(filename, O_BINARY | O_RDONLY | O_RANDOM | O_LARGEFILE, _S_IREAD );
if (m_fileHandle < 0)
{
int err = errno;
tstring sFileName = filename;
if ( err == ENOENT )
throw FileIOException(_T("File does not exist: ") + sFileName);//抛出此异常
....
}