我在我的代码中使用短语查询进行hibernate lucene搜索。它正在工作,但我想进行精确搜索,这种情况是Insensitive.I尝试了术语查询,但它区分大小写。 我想搜索如下:
BeautifulRainy Day。 如果我搜索"下雨天"结果应为0次点击。 如果我搜索#34; beautifulrainy Day"结果应该是1击中。 如果我搜索" Day"结果应为0次点击。
基本上我想要java(.equalignorecase)类型搜索不(.contains)。我想继续使用短语查询(如果可能的话)。
答案 0 :(得分:0)
如果您需要不区分大小写的匹配,则必须对数据不区分大小写的索引编制索引。
您可以执行此操作,例如,使用字符串的toLowerCase()
值向您的班级添加其他字段,然后搜索该字段。
(或许hibernate搜索允许使用选项进行不区分大小写的索引?)
答案 1 :(得分: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
是字段的名称,因此请在编制索引时使用您的字段名称。