elasticsearch 统一搜索中是否有类似包含的内容?

x3naxklr  于 2022-11-22  发布在  ElasticSearch
关注(0)|答案(1)|浏览(133)

我有一行代码

query = query.Filter(i => 
        (
            !i.MatchTypeHierarchy(typeof(InfoPage)) 
            | (((InfoPage)i).SearchSubsection().Exists() 
            & ((InfoPage)i).GetSearchSubSection().Contains(SOMETHING))
        )
    ); // I want to check if it contains

我想检查FIND查询中是否存在类似字符串包含子字符串的情况。
提前感谢你的帮助。:)

p8h8hvxi

p8h8hvxi1#

首先,您要转换为InfoPage,这表示您不应该使用统一搜索,而应该使用类型化搜索功能。
其次,contains 通常被称为通配符搜索。
不久前我编写了一个类型化的搜索通配符方法,请参见https://www.herlitz.io/2016/09/19/episerver-find-wildcard-searching/

public static class SearchExtensions
{
    public static IQueriedSearch<T> WildCardSearch<T>(this ITypeSearch<T> search, string query)
    {
        return search.For<T>(query, q => q.Query = string.Concat("*", query, "*"));
    }
}

用法示例

var result = SearchClient.Instance.Search<InfoPage>()
                    .WildCardSearch(query)
                    .OrderByDescending(x => x.Name)
                    .FilterForVisitor()
                    .GetContentResult();

相关问题