在lucene.net QueryParser中使用通配符的问题

在lucene.net QueryParser中使用通配符的问题,lucene,full-text-search,lucene.net,Lucene,Full Text Search,Lucene.net,我有以下Lucene.Net搜索代码: 如果我使用如下查询: AccountId:1 AND CompanyId:1 AND CreatedOn:[636288660000000000 TO 636315443990000000] AND AuditProperties.FriendlyName.NewValue:CustomerId|235 它与CustomerId=235完全匹配,工作正常 但是,如果我尝试搜索通配符匹配,例如: AccountId:1 AND CompanyId:1 A

我有以下Lucene.Net搜索代码:

如果我使用如下查询:

AccountId:1 AND CompanyId:1 AND CreatedOn:[636288660000000000 TO 636315443990000000] AND AuditProperties.FriendlyName.NewValue:CustomerId|235
它与CustomerId=235完全匹配,工作正常

但是,如果我尝试搜索通配符匹配,例如:

AccountId:1 AND CompanyId:1 AND CreatedOn:[636288660000000000 TO 636315443990000000] AND AuditProperties.FriendlyName.NewValue:CustomerId|*235*
这不会给我带来任何结果。我认为它仍然是一个精确匹配的值“*235*”我在这里遗漏了什么吗

谢谢

根据,不支持字符
|
。但是,不太清楚您希望它是逻辑字符还是文字字符

逻辑或 逻辑OR的正确语法是
CustomerId或*235*
CustomerId*235*
CustomerId | |*235*

此外,如果这是逻辑OR,则必须考虑前导通配符,如中所述

文字
|
要搜索文字管道字符,应转义该字符,以便解析器不会将其与逻辑OR混淆

CustomerId\|*235*

是的,但是我没有在查询中使用前导通配符,正如您所看到的。是的,您是-
*235*
2
前面的
*
是前导通配符。此处的值为CustomerId |*235*。注意,“CustomerId |”是值的一部分。此查询应该可以正常工作。您能调试并向我们显示parser.Parse(查询)的值吗?你能在卢克身上复制吗?此外,单管(|)有点不确定,因为Luke(至少v4.0)认为单管是逻辑OR。
CustomerId\|*235*