我正在使用lucene 2.9.2(.NET没有lucene 3)
“tag:C#”获取与“tag:c”相同的结果。如何让'C#'成为搜索词?我尝试将Field.Index.ANALYZED更改为Field.Index.NOT_ANALYZED,但这没有给我任何结果。
我假设我需要逃避每个标签,我该怎么做?
答案 0 :(得分:4)
问题不在于查询,它正在使用的查询分析器从查询和(如果您使用相同的分析器进行插入 - 您应该使用的)和字段中删除“#”。
您需要找到一个能够保留这种特殊字符的分析器,或者编写一个自定义字符。
修改:查看KeywordAnalyzer
- 它可能就是这样做的:
将整个流“标记”为单个标记。这对于邮政编码,ID和某些产品名称等数据非常有用。
答案 1 :(得分:1)
根据Lucene的Java Documentation 2.9.2'''不是特殊字符,需要在查询中转义。你能检查出来(即用Luke打开索引),“C#”值实际上是如何存储在索引中的吗?