0

多くの dtSearch インデックスがあり、私の目標は、"TestString-A" および "TestString-B" 文字列のすべての一致を見つけることです。

次のdtSearchリクエストを使用して、すべての一致を検索します: "*TestString-B*". そして、このリクエストは正常に機能し ます。すべてのドキュメントで「TestString-B」のすべての出現を返します。

ただし、リクエストが の場合は機能しません"*TestString-A*"。「TestString-A」の出現はありますが、返されません。しかし、"*TestString*"リクエストは「TestString-A」を含む多くのオカレンスを返します。

dtSearch は、「-A」接尾辞を特殊文字と見なしているようです。それを防ぐ方法はありますか?

これは検索用の私のコードです(フラグなしで呼び出そうとしましたが、役に立ちませんでした):

        searchTerm = '*' + searchTerm + '*';
        var folderManager = new FolderManager(_siteConfig);
        var indexFileLocation = Path.Combine(folderManager.GetFolderPath(Folder.FullTextIndexes), indexFolder);
        var searchJob = new SearchJob
        {
            TimeoutSeconds = DTSEARCH_TIMEOUT_SECONDS,
            SearchFlags = SearchFlags.dtsSearchWantHitDetails | SearchFlags.dtsSearchWantHitsByWord | SearchFlags.dtsSearchWantHitsArray,
            Request = searchTerm
        };
        searchJob.IndexesToSearch.Add(indexFileLocation);
        searchJob.Execute();
        //searchJob.Results.Count always equals to 0 when searchTerms has "-A" postfix

これは、インデックスを作成するための私のコードです

private IndexJob GetJob(..., statusHandler)
{
    var indexPath = ...;
    var logFilePath = ...;

    var indexJob = new IndexJob();
    indexJob.IndexPath = indexPath;
    indexJob.ActionCreate = true;
    indexJob.ActionAdd = true;
    indexJob.IndexingFlags = IndexingFlags.dtsIndexCacheText |
    IndexingFlags.dtsIndexCacheOriginalFile |
    IndexingFlags.dtsAlwaysAdd |
    IndexingFlags.dtsIndexKeepExistingDocIds;
    indexJob.StoredFields.Add("UserDisplayName");
    indexJob.StoredFields.Add("UserDescription");
    indexJob.DataSourceToIndex = ...;
    indexJob.StatusHandler = statusHandler;

    SetIndexJobOptions();

return indexJob;
}


private void SetIndexJobOptions()
{
    var options = new Options();
    options.FieldFlags = FieldFlags.dtsoFfSkipFilenameField | FieldFlags.dtsoFfOfficeSkipHiddenContent | FieldFlags.dtsoFfXmlSkipAttributes | FieldFlags.dtsoFfSkipFilenameFieldPath;
    options.BinaryFiles = BinaryFilesSettings.dtsoIndexBinaryNoContent;
    options.TextFlags = TextFlags.dtsoTfRecognizeDates;
    options.Save();
}

DtSearch エンジンのバージョンは 7.96 (ビルド 8668)

4

0 に答える 0