2011-12-21 48 views
0

我在我的项目中使用了基于罗盘的索引。现在,在其中一个场景中,我的字段值类似'dummy#value'。因此,如果我试图用包含'#'字符的任何值进行搜索,则返回0行。指南针在搜索查询中用“#”(散列字符)返回0行

例如,

DummyTable

id field_name 
---------------- 
1 dummy#value 
2 otherVal1 
3 otherVal2 

查询

+(+alias:DummyTable +field_name:dummy#value*) +(alias:DummyTable) 

返回0行,而

+(+alias:DummyTable +field_name:dummy*) +(alias:DummyTable) 

返回1行..

回答

0

我被要求注释字段声明为

NOT_ANALYZED:(索引属性的不使用的分析值,所以它可以被搜查)

@SearchableProperty(index=Index.NOT_ANALYZED) 
private String field_name; 
1

我不认为#是一个特殊字符,所以我很惊讶这不适合你。您可以尝试使用\#转义角色。

另一种选择可能是围绕在引号

术语

好运

+0

感谢您的回应...试图用\#不会w ork ... with query:+(+ alias:DummyTable + field_name:dummy“#”value *)+(别名:DummyTable)它返回所有记录,因为一些自动索引的字段具有值,如$/uid:DummyTable# 74#,DummyTable#73#等,这意味着每当我们用“”(双引号)包围任何项时,它将搜索所有索引字段? – Nirmal 2011-12-27 05:26:18

+0

你是否可以不用引号括住整个词语,即“dummy#value”? – Edd 2011-12-27 16:05:05