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)
字段名称区分大小写.据我所知,没有开关可以翻转,以便制作它们.
可能最合理的方法是确保在索引文档时,所有字段名称都是小写的.然后,在查询时,如果您没有查询任何区分大小写的字段,您可以使用String.toLowercase(),以使整个查询字符串也小写,从而有效地使其不区分大小写.
| 归档时间: |
|
| 查看次数: |
3260 次 |
| 最近记录: |