Lucene提升区分大小写的匹配

时间:2014-06-11 09:07:29

标签: lucene

我们的客户在其网站上使用了一些缩写词。

例如,假设STACK是他们正在使用的首字母缩略词。

当他们搜索“STACK”(关键字)时,他们希望完全匹配“STACK”的文档(大写)位于搜索结果的顶部,而不是匹配“stack”小写的文档。

有没有办法实现这个目标?也许是通过查询提升某种方式?

我现在正在使用StandardAnalyzer。

2 个答案:

答案 0 :(得分:0)

来自文档:

public final class StandardAnalyzer extends StopwordAnalyzerBase

  

使用StandardFilter,LowerCaseFilter和。过滤StandardTokenizer   StopFilter,使用英文停用词列表。

所以你在'STACK'和'stack'之间没有区别。您可以将关键字再次添加为与您搜索的关键字完全匹配的StringField,并提升关键字字段。

答案 1 :(得分:0)

对这一个案例(STACK vs stack)做出任何判断真的很难。如果您的所有首字母缩略词都是大写的,只需从分析器链中排除LowerCaseFilter即可。如果您的某些首字母缩略词可以包含点或短划线(例如Y.M.C.A.),则可能需要使用WhitespaceAnalyzer(而不是StandardAnalyzer)来确保它们不会分成多个术语。

对我来说,在这里提升声音是多余的。假设有人输入的查询与首字母缩略词紧密匹配,相关文件因其相似性而无论如何都会排在高位。