You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Umbraco 10 Examine搜索添加前后通配符的代码修改求助

为Examine查询添加前后通配符

方法一:直接为搜索文本拼接通配符

最简单的实现方式是在传入的searchText前后添加*通配符,以此实现前缀+后缀的模糊匹配。修改后的代码如下:

_examineManager.TryGetIndex("ExternalIndex", out IIndex? index);
// 为搜索文本添加前后通配符
var wildcardSearchText = $"*{searchText}*";
var results = index.Searcher.CreateQuery()
               .Field("bodyBlockListSearch", wildcardSearchText)
               .Execute();

注意:该方式依赖Examine默认查询解析器对*通配符的支持,需确保bodyBlockListSearch字段使用的分析器不会过滤或转义*字符。

方法二:使用Examine的Wildcard查询方法

若需要更明确的通配符查询声明,可以直接调用Examine提供的Wildcard方法构建查询:

_examineManager.TryGetIndex("ExternalIndex", out IIndex? index);
var results = index.Searcher.CreateQuery()
               .Wildcard("bodyBlockListSearch", $"*{searchText}*")
               .Execute();

这种写法更直观,能明确区分通配符查询与普通字段查询,避免语法冲突。

额外注意事项

  • 性能优化:*xxx*形式的前后通配符查询会比前缀查询(xxx*)消耗更多性能,因为需要遍历更多索引项。若数据集较大,建议限制此类查询的使用场景,或优化索引配置。
  • 特殊字符转义:如果searchText包含查询语法特殊字符(如+、-、"等),需先转义避免解析错误,可使用Examine内置的转义方法:
var escapedSearchText = Examine.LuceneEngine.Queries.QueryParser.Escape(searchText);
var wildcardSearchText = $"*{escapedSearchText}*";

内容的提问来源于stack exchange,提问作者DarkW1nter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 08:52:08