【问题标题】:lucene phrase exact searchlucene 词组精确搜索
【发布时间】:2015-09-08 05:53:52
【问题描述】:
我在我的代码中使用短语查询进行休眠 lucene 搜索。它正在工作,但我想做不区分大小写的精确搜索。我尝试过术语查询,但它区分大小写。
我想像这样搜索:
美丽的雨天。
如果我搜索“下雨天”,结果应该是 0 次点击。
如果我搜索“beautifulrainy Day”,结果应该是 1 次命中。
如果我搜索“Day”,结果应该是 0 次点击。
基本上我想要java(.equalignorecase)类型搜索而不是(.contains)。如果可能的话,我想继续使用短语查询。
【问题讨论】:
标签:
java
hibernate
search
lucene
hibernate-search
【解决方案1】:
如果你想要不区分大小写的匹配,你必须索引你的数据不区分大小写。
例如,您可以通过使用 String 的 toLowerCase() 值将另一个字段添加到您的类中,然后搜索该字段来执行此操作。
(或者也许休眠搜索允许使用选项进行不区分大小写的索引?)
【解决方案2】:
嗨,请通过我提供的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是字段的名称,所以请输入您在索引时使用的字段名称。