2015-09-08 140 views
0

我在我的代码中使用短语查询搜索hibernate lucene。它正在工作,但我想要做精确搜索,这是大小写不敏感。我尝试了术语查询但区分大小写。 我想搜索如:lucene短语确切搜索

BeautifulRainy日。 如果我搜索“雨天”,结果应该是0次。 如果我搜索“美丽日”,结果应该是1次命中。 如果我搜索“日”,结果应该是0次。

基本上我想要java(.equalignorecase)类型的搜索不是(.contains)。我想继续使用短语查询,如果有可能的话。

回答

0

如果你想不区分大小写的匹配,你必须索引你的数据不区分大小写。

您可以这样做,例如,使用字符串的toLowerCase()值向您的班级添加其他字段,然后搜索该字段。

(或者休眠搜索允许不区分大小写的索引有选择吗?)

0

嗨请通过此answer由我给出。它搜索确切的大小写不敏感的术语。刚刚通过双引号搜索字符串,充当完全匹配搜索。

QueryParser parser = new QueryParser(Version.LUCENE_34, "TITLE" ,new StandardAnalyzer(Version.LUCENE_34)); 

    Query query; 

    query = parser.parse("\"beautifulrainy Day\""); 

    TopDocs hits = searcher.search(query,3); 

这里TITLE是字段的名称,所以地方的字段名称,你已经在索引的时候使用。