Lucene特殊字符后接数字

问题描述 投票:0回答:1

我有一个包含可搜索字段的文档。该字段的值是:“ CAM CAM托儿袋/尿布袋+必需品套装灰色(6件)”

当我对这个确切的词组进行搜索时,我没有找到任何匹配,搜索其中的大部分内容都会将其作为匹配返回。使用以下命令设置特殊字符:searchText = QueryParserBase.Escape(searchText);

如果我从查询中删除(6,则它匹配。如果我更改(6 =>((添加到文档中的源数据和查询中的a都匹配。

Lucene似乎不知道如何处理后跟数字的特殊字符,但我不知道为什么这样做会有所不同。

我宁愿不搜索这种确切的用例,如果可能的话,将其从查询中删除。我希望有人用正确匹配的特定级别进行搜索。

c# lucene.net
1个回答
0
投票

因此,这不是找不到它的情况(由于特殊代码,所以6。我仍然不完全理解为什么会找到它(如果我将其更改为它。但是无论如何。

问题是我使用的EdgeNgramFilter将minGram设置为3,因此搜索条件为2及以下的搜索项破坏了我们的代码。解决方案是在对搜索文本进行转义之前以及在对其进行解析和搜索之前,将所有这些从搜索文本中删除。

© www.soinside.com 2019 - 2024. All rights reserved.