C# 使用Lucene和Azure search.NET SDK进行模糊搜索

C# 使用Lucene和Azure search.NET SDK进行模糊搜索,c#,lucene,azure-cognitive-search,fuzzy-search,azure-search-.net-sdk,C#,Lucene,Azure Cognitive Search,Fuzzy Search,Azure Search .net Sdk,我正在尝试使用Azure search.NETAPI,将模糊搜索与部分搜索和匹配增强相结合 这是我目前拥有的,它还不起作用: // Create SearchIndexClient searchIndexClient= new SearchIndexClient("searchServiceName", "indexName", [credentials]); // Set search params var searchParameters = new SearchParameters(

我正在尝试使用Azure search.NETAPI,将模糊搜索与部分搜索和匹配增强相结合

这是我目前拥有的,它还不起作用:

// Create SearchIndexClient
searchIndexClient= new SearchIndexClient("searchServiceName", "indexName", [credentials]);
// Set search params
var searchParameters = new SearchParameters(
                includeTotalResultCount: true,
                queryType: QueryType.Full);
// Set search string
string searchText = "elise*~^10";
// perform search.
var result = searchIndexClient.Documents.SearchAsync(searchText, searchParameters);
该索引中有一个属性名为“Elyse”的条目。使用上述代码找不到此条目。如果我将searchText更改为
“elyse~”
,则会返回条目

我也无法在Azure web portal搜索资源管理器中使用它(那东西有名字吗?)

我错过了什么? 我认为这可能是逃跑的问题,但我不知道如何解决它。 我看了一大堆关于这个主题的文档和堆栈溢出问题,但没有一个给出关于如何使用.NETSDK进行模糊搜索调用的完整答案。因此,如果可能,请以完整代码的形式回复。
非常感谢。

我还没有编译您的应用程序代码,但它看起来是正确的。这里的问题是,通配符查询不能使用fuzzy运算符,因为您希望它在这里工作

报告中有一条说明:

你不能使用*或?符号作为搜索的第一个字符否 对通配符搜索查询执行文本分析。在查询时, 将通配符查询词与搜索中分析的词进行比较 索引和扩展

这意味着在通配符之后指定模糊运算符没有任何影响,结果与不应用它相同。在您的示例中,
elise*^10
实际上是
elise*^10
,因此与“elyse”不匹配


在查询中表达这一点的一种方法是使用OR运算符<代码>elise~^10或elise*^10。由于第1条的原因,这将返回包含“elyse”的文档。

感谢您的回答,即使是在我发布问题几天后。我们决定在代码中使用构建部分和模糊搜索,而不使用Azure Congnitive search的功能。这样,我们可以将局部搜索和模糊搜索结合起来,从而获得更多的控制。