在我的数据源中有许多特殊字符,如正斜杠,减号,加等等。很多这些字符给lucene带来了问题。
这就是为什么我决定编码我放在索引中的所有字符串。
例如苹果/梨将成为苹果%2Fpear
我想,搜索完全相同的字符串会返回给我这个文档。
但我空手而归。出了什么问题?
- 编辑 -
在一些鬼混之后,我注意到我在Luke中使用StandardAnalyzer(使用任何分析器)创建的查询在空格中更改了我的%2。因此没有结果。我可以以某种方式使queryAnalyzer不转换这些?也许我应该使用不同的逃避方法然后%XX?
- 更多信息 -
我正在使用StandardAnalyzer进行索引和查询
我不是编码空间。这是我快速推出自己的编码而不是使用默认URL编码器的原因之一。
将 apple / pear 变成 apple pear 会让人感觉到,但在我的真实数据中并不总是(用水果来保护无辜者)并建立智力什么时候插入空格,何时插入空格会占用太多风险。
使用Luke我可以看到我的字段包含 appel%2Fpear 。正在搜索 fruitName:appel 。搜索 fruitName:appel%2Fpear 不会, fruitName:appel%2fpear 也不会。
答案 0 :(得分:1)
查询时需要escape special characters。从特殊字符列表中缺少正斜杠。我想,你不需要处理这个角色。
但您需要验证索引时创建的令牌是否也包含这些特殊字符。例如,应该有一个“苹果/梨”的标记。