【发布时间】:2014-04-23 15:59:17
【问题描述】:
如何在 lucene 中使字段不区分大小写?假设,我有以下文件:
用户:xyz
现在,文档应该作为查询“user:xyz”、“uSer:xyz”或“usEr:xyz”的结果返回。
可能的解决方案是在索引和搜索时将字段小写。但是在检索文档时我需要该字段的确切值。另外,另一种解决方案是对该字段进行两次索引,但这也不是正确的解决方案。
这是 lucene 示例。当查询为“user:xyz”时,文档不匹配。但是,如果我使用查询“用户:xyz”,那么文档匹配,因为在索引时我有字段为“用户”。
public void testFieldCaseSensitive() throws ParseException,
QueryNodeException {
StandardQueryParser parser = new StandardQueryParser();
Query luceneQuery = parser.parse("user:xyz","");
MemoryIndex memoryIndex = new MemoryIndex();
memoryIndex.addField("User", "xyz", new StandardAnalyzer(
Version.LUCENE_43));
memoryIndex.search(luceneQuery);
Assert.assertTrue(memoryIndex.search(luceneQuery) > 0);
}
【问题讨论】:
-
如果我没记错的话,我猜它已经不区分大小写了?
-
你能提供一些例子吗?我已经处理了这些值,但没有处理字段本身。
-
是的,马上看到我的回答。
-
对不起,我第一次阅读时没有正确理解您的问题。应该更仔细地阅读。
标签: java solr lucene information-retrieval