Skip to content

LT-22524: Add substring search mode to StringSearcher - #395

Draft
thejambi wants to merge 2 commits into
masterfrom
LT-22524
Draft

LT-22524: Add substring search mode to StringSearcher#395
thejambi wants to merge 2 commits into
masterfrom
LT-22524

Conversation

@thejambi

@thejambi thejambi commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

Add a Substring value to SearchType that matches the query anywhere within a string, case- and diacritic-insensitive, backed by a raw-string index scanned with CompareInfo.IndexOf. The existing Exact/Prefix/FullText modes are unchanged. This change enables a change in FieldWorks to use this new SearchType, see sillsdev/FieldWorks#1069

https://jira.sil.org/browse/LT-22524


This change is Reviewable

@github-actions

github-actions Bot commented Aug 14, 2026

Copy link
Copy Markdown

LCM Tests

    16 files  +    8      16 suites  +8   2m 5s ⏱️ + 1m 2s
 2 878 tests +    3   2 858 ✅ +   17   20 💤  - 14  0 ❌ ±0 
11 460 runs  +5 736  11 292 ✅ +5 650  168 💤 +86  0 ❌ ±0 

Results for commit 2ea6e2c. ± Comparison against base commit 6e97da6.

♻️ This comment has been updated with latest results.

Add a Substring value to SearchType that matches the query anywhere
within a string, case- and diacritic-insensitive, backed by a
raw-string index scanned with CompareInfo.IndexOf. The existing
Exact/Prefix/FullText modes are unchanged.
* Fix Windows CI by scoping IntermediateOutputPath per framework

Directory.Build.props sets AppendTargetFrameworkToOutputPath=false so that
OutputPath can place output under artifacts/$(Configuration)/$(TargetFramework)
itself. That flag also strips $(TargetFramework) from IntermediateOutputPath,
so all three target frameworks of a multi-targeted project shared a single obj
folder - including the reference assembly under obj/ref. Whichever framework
built last owned it.

ProjectReference resolution reads that reference assembly, so the
netstandard2.0 compile of SIL.LCModel could be handed the net8.0 build of
SIL.LCModel.Core:

  CSC : error CS1705: Assembly 'SIL.LCModel.Core' ... uses
  'System.Drawing.Primitives, Version=8.0.0.0' which has a higher version than
  referenced assembly 'System.Drawing.Primitives, Version=4.0.2.0'
  [SIL.LCModel.csproj::TargetFramework=netstandard2.0]

Build ordering decided whether this hit, which is why Windows failed while
Linux stayed green. #394 removed the OutDir override in SIL.LCModel and fixed
the bin side of the same problem; the intermediate side kept sharing one path.

Set IntermediateOutputPath to obj/$(Configuration)/$(TargetFramework)/ in
Directory.Build.props, and drop the obj/x86/$(Configuration)/ override in
SIL.LCModel.Core.csproj that predates multi-targeting and now conflicts with
it - Platform is Any CPU repo-wide, so the x86 segment bought nothing.
OutputPath and the artifacts layout are unchanged.

* Remove comments

Co-Authored-By: Zachary Burnham <zachary_burnham@sil.org>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant