我在我的代码中使用短语查询搜索hibernate lucene。它正在工作,但我想要做精确搜索,这是大小写不敏感。我尝试了术语查询但区分大小写。 我想搜索如:lucene短语确切搜索
BeautifulRainy日。 如果我搜索“雨天”,结果应该是0次。 如果我搜索“美丽日”,结果应该是1次命中。 如果我搜索“日”,结果应该是0次。
基本上我想要java(.equalignorecase)类型的搜索不是(.contains)。我想继续使用短语查询,如果有可能的话。
我在我的代码中使用短语查询搜索hibernate lucene。它正在工作,但我想要做精确搜索,这是大小写不敏感。我尝试了术语查询但区分大小写。 我想搜索如:lucene短语确切搜索
BeautifulRainy日。 如果我搜索“雨天”,结果应该是0次。 如果我搜索“美丽日”,结果应该是1次命中。 如果我搜索“日”,结果应该是0次。
基本上我想要java(.equalignorecase)类型的搜索不是(.contains)。我想继续使用短语查询,如果有可能的话。
如果你想不区分大小写的匹配,你必须索引你的数据不区分大小写。
您可以这样做,例如,使用字符串的toLowerCase()
值向您的班级添加其他字段,然后搜索该字段。
(或者休眠搜索允许不区分大小写的索引有选择吗?)
嗨请通过此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
是字段的名称,所以地方的字段名称,你已经在索引的时候使用。