我有lucene.net 2.9一个奇怪的问题: 如果我寻找:high-quality
没有找到任何结果。我发现连字符字符( - )是一个Lucene的问题,所以我搜索high quality
它完美地工作。Lucene的搜索数字的
当我搜索30-40
它显示的结果,但30 40
没有显示任何。
第二方案是在第一与一个矛盾。 我想,因为我有一个数字文本,第二个是相关的,但我没有找到有关网络的东西。
我有lucene.net 2.9一个奇怪的问题: 如果我寻找:high-quality
没有找到任何结果。我发现连字符字符( - )是一个Lucene的问题,所以我搜索high quality
它完美地工作。Lucene的搜索数字的
当我搜索30-40
它显示的结果,但30 40
没有显示任何。
第二方案是在第一与一个矛盾。 我想,因为我有一个数字文本,第二个是相关的,但我没有找到有关网络的东西。
我猜你使用StandardAnalyzer
索引你的条款,然后搜索时没有进行某种形式的分析,或采用不同的分析形式。
2.9 StandardAnalyzer
(ClassicAnalyzer
,版本3.1)在连字符周围有一些有趣的行为。引述StandardTokenizer
documentation:
把词的连字符,除非有一些令牌,在这种情况下,整个令牌被解释为产品编号,而不是分裂。
所以两个连字符的单词(或字母任何集合)将被分割为独立的令牌,当扔进组合任何数量将解释整个事情作为一个产品编号,指数为英格尔的道理,连字符和所有的,所以:
所以,如果在这样的分析字段构建 “高质量” 一个TermQuery
,你将不会得到任何结果(尽管如果使用QueryParser
和相同的分析仪)。当搜索“30-40”时,“30-40”的TermQuery
将完全匹配。但“30”和“40”都不会找到匹配项。
所以,我不是你如何查询运行为不匹配有(可能使用StandardAnalyzer
当索引和WhitespaceAnalyzer
查询时?),但希望在正确的方向点。
你需要加密“ - ”登录URL参数。我认为它会正常工作。
你能略低更具体到究竟你在做什么。你如何调用lucene?使用什么数据类型等等。 – CodeTower
我有一些PDF索引。我检查了卢克,当我用卢克搜索时,我也遇到了同样的问题,如果我正在搜索的文本包含“减号字符”没有找到,并且文本包含数字后面跟着减号,再后面跟着数字被找到。 1)没有找到高质量; 2)发现高质量; 3)找到30-40; 4)未找到30 40 – user3596223