Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
Lucene 如何支持通配符搜索?
我想搜索以 ox 开头的单词,我正在搜索单词,ox*但它也返回了意想不到的结果,例如anti-oxide- 但我不希望它作为结果。
ox*
anti-oxide
这与您的数据的分析方式有关。StandardAnalyzer 将分隔空格和标点符号的术语(以及许多其他规则)。标准分析器通常非常适合全文。如果它不适合您的特定需求,可以使用许多其他分析仪。如果没有更多关于你打算完成的信息,我真的不能推荐一个特定的。
根据 Lucene FAQ ,您的查询ox*应该只匹配以 ox 开头的术语。
因为 将StandardTokenizer连字符视为分隔符,所以一个单词 likeanti-oxide被分成两个单词 -anti因此在您搜索时oxide匹配。anti-oxideox*
StandardTokenizer
anti
oxide
您有 2 个选项可以更改此行为: