查询后跟数字的 Lucene 特殊字符
Querying Lucene Special Character followed by a number
我有一个包含可搜索字段的文档。该字段的值为:"CAM CAM Nursery Bag / Nappy Bag + Essentials Set Grey (6 pieces)"
当我对这个确切的短语进行搜索时,我没有找到任何匹配项,搜索它的大部分将 return 它作为一个匹配项。
特殊字符设置使用:
searchText = QueryParserBase.Escape(searchText);
如果我从查询中删除 (6 然后它匹配。如果我更改 (6 => (a 在添加到文档的源数据和查询中它匹配。
lucene 似乎不知道如何处理后跟数字的特殊字符,但我不知道为什么会有什么不同。
如果可能的话,我宁愿不搜索这个确切的用例以将其从查询中删除。我想如果有人用这个级别的特定搜索它匹配正确。
所以这不是找不到 (6 因为特殊代码。
我仍然不完全明白为什么它能找到(如果我把它改成那个。但是不管怎样。
问题是我使用的 EdgeNgramFilter 将 minGram 设置为 3,因此 2 及以下的搜索词破坏了我们的代码。解决方案是在我们转义搜索文本之前以及在我们解析和搜索它之前从搜索文本中删除所有这些。
我有一个包含可搜索字段的文档。该字段的值为:"CAM CAM Nursery Bag / Nappy Bag + Essentials Set Grey (6 pieces)"
当我对这个确切的短语进行搜索时,我没有找到任何匹配项,搜索它的大部分将 return 它作为一个匹配项。
特殊字符设置使用:
searchText = QueryParserBase.Escape(searchText);
如果我从查询中删除 (6 然后它匹配。如果我更改 (6 => (a 在添加到文档的源数据和查询中它匹配。
lucene 似乎不知道如何处理后跟数字的特殊字符,但我不知道为什么会有什么不同。
如果可能的话,我宁愿不搜索这个确切的用例以将其从查询中删除。我想如果有人用这个级别的特定搜索它匹配正确。
所以这不是找不到 (6 因为特殊代码。 我仍然不完全明白为什么它能找到(如果我把它改成那个。但是不管怎样。
问题是我使用的 EdgeNgramFilter 将 minGram 设置为 3,因此 2 及以下的搜索词破坏了我们的代码。解决方案是在我们转义搜索文本之前以及在我们解析和搜索它之前从搜索文本中删除所有这些。