对于短语搜索,我们只想在完全匹配的情况下显示结果(不忽略停用词)。如果是非短语搜索,即使单词的根形式匹配等,我们也可以很好地显示结果。
我们目前通过standardTokenizer、StopFilter、PorterStemFilter 和LowerCaseFilter 传递我们的数据。因此,当用户想要搜索“密码管理”时,搜索会显示包含“密码管理”的结果。
如果我删除 StemFilter,那么我将无法匹配非短语查询的词根形式。我在想是否应该将相同的数据索引为文档中两个字段的一部分。
我在同一字段的不同索引和搜索策略中问过同样的问题,而不会使索引大小加倍?. 然而,办公室里的人们对于将相同的数据作为两个字段的一部分进行索引并不高兴。(我们目前在 lucene 文档中有大约 20 个文本字段)。有什么方法可以使用 TokenFilters 来支持我上面列出的两种情况?
比如说,对于 StopFilter,进行更改以使其同时发出输入令牌和 ? (对于忽略的单词)具有相同的位置增量。与 StemFilter 类似,它发出具有相同位置增量的输入标记和词干标记。基本上输入和输出标记(甚至被忽略的标记)具有相同的位置。
继续采用这种方法是否安全?有没有其他人遇到过这里列出的要求?是否有现成的过滤器可以做类似于我在方法中提到的事情?
谢谢