使lucene中的字段不区分大小写

pun*_*eet 1 java lucene solr information-retrieval

如何在lucene中使现场不区分大小写?假设,我有一个以下文件:

用户:XYZ

现在,应该返回文档作为查询"user:xyz","uSer:xyz"或"usEr:xyz"的结果.

可能的解决方案是在索引和搜索时降低字段.但是在检索文档时我需要字段的确切值.另外,另一种解决方案是将字段索引两次,但这也不是正确的解决方案.

这是lucene的例子.当查询是"user:xyz"时,文档不匹配.但是如果我使用查询"User:xyz"那么文档会匹配,因为索引时我将字段设置为"User".

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);
}
Run Code Online (Sandbox Code Playgroud)

fem*_*gon 5

字段名称区分大小写.据我所知,没有开关可以翻转,以便制作它们.

可能最合理的方法是确保在索引文档时,所有字段名称都是小写的.然后,在查询时,如果您没有查询任何区分大小写的字段,您可以使用String.toLowercase(),以使整个查询字符串也小写,从而有效地使其不区分大小写.