lucene短语精确搜索

时间:2015-09-08 05:53:52

标签: java hibernate search lucene hibernate-search

我在我的代码中使用短语查询进行hibernate lucene搜索。它正在工作,但我想进行精确搜索,这种情况是Insensitive.I尝试了术语查询,但它区分大小写。 我想搜索如下:

BeautifulRainy Day。 如果我搜索"下雨天"结果应为0次点击。 如果我搜索#34; beautifulrainy Day"结果应该是1击中。 如果我搜索" Day"结果应为0次点击。

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

2 个答案:

答案 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是字段的名称,因此请在编制索引时使用您的字段名称。