Java 使用“返回0行的罗盘#”;搜索查询中的(哈希字符)

Java 使用“返回0行的罗盘#”;搜索查询中的(哈希字符),java,lucene,indexing,compass-lucene,Java,Lucene,Indexing,Compass Lucene,我在我的项目中使用基于指南针的索引。现在在其中一个场景中,我有一些字段值,比如“dummy#value”。因此,如果我尝试使用包含“#”字符的任何值进行搜索,它将返回0行 例如 DummyTable id field_name ---------------- 1 dummy#value 2 otherVal1 3 otherVal2 查询 +(+alias:DummyTable +field_name:dummy#value*) +(alias:DummyTable)

我在我的项目中使用基于指南针的索引。现在在其中一个场景中,我有一些字段值,比如“dummy#value”。因此,如果我尝试使用包含“#”字符的任何值进行搜索,它将返回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行..

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

另一种选择是用引号括住这个词


祝你好运

我被要求将字段声明注释为

未分析:(在不使用分析器的情况下索引属性的值,以便可以对其进行搜索)


谢谢你的回复。。。尝试了\#但不起作用。。。使用query:+(+别名:DummyTable+字段名称:dummy“#”value*)+(别名:DummyTable)返回所有记录,因为一些自动索引的字段具有值,例如$/uid:DummyTable#74#,DummyTable#73#等,这意味着每当我们用“”(双引号)包围任何术语时,它都会搜索所有索引字段?你不能用引号将整个术语括起来,例如“虚拟值”吗?
@SearchableProperty(index=Index.NOT_ANALYZED)
private String field_name;