索引和搜索特殊字符,如'@''#';在lucene

索引和搜索特殊字符,如'@''#';在lucene,lucene,Lucene,我正在使用standardalyzer为字段编制索引,它从输入字符串中删除标点符号。我的输入字符串包含特殊字符,如@、#、-等 例如:索引数据可能由userid:AB@234,ABC#DF 我正在尝试更新传递BooleanQuery uesrid:ABC@34使用writer.deletedocuments(查询)删除以前的文档 使用writer.updateDocuments(术语、文档)更新索引 使用上述查询删除当前indexex将删除以ABC@开头的所有值。即,具有userid值的文档AB

我正在使用
standardalyzer
为字段编制索引,它从输入字符串中删除标点符号。我的输入字符串包含特殊字符,如
@
#
-

例如:索引数据可能由userid:
AB@234
ABC#DF

我正在尝试更新传递BooleanQuery uesrid:
ABC@34
使用
writer.deletedocuments(查询)删除以前的文档
使用
writer.updateDocuments(术语、文档)更新索引

使用上述查询删除当前indexex将删除以
ABC@
开头的所有值。即,具有userid值的文档
ABC@123
ABC@55
等也被删除

有谁能提出一个解决方案来索引和更新包含上述特殊字符的特定文档

任何建议都将受到高度赞赏

先谢谢你


Chakradhar

最好的选择可能是使用索引您的
用户ID
字段,然后使用来删除文档。

感谢您宝贵的建议。我将userid字段索引为未分析,并使用KetWordAnalyzer搜索该术语。当我使用KeyWordAnalyzer搜索索引时,SOUTION就起作用了。是否有一种方法可以使用StandardAnalyzer为userid字段编制索引,并且仍然使用keyWordAnalyzer或任何其他为特殊字符编制索引的分析器来搜索索引我要求使用StandardAnalyzer的主要原因是因为它允许传递通配符查询。然而关键字分析器不允许通配符搜索。也许你应该为每个字段使用不同的分析器,例如使用