具有特殊字符的 Hibernate Search Lucene 查询解析器
Hibernate Search Lucene query parser with Special Characters
第一个问题:
有人可以向我解释 Hibernate Search 中的 lucene 查询如何处理特殊字符。我阅读了有关 Hibernate search and also the Lucene Regexp Syntax 的文档,但不知何故它们并没有与生成的查询和结果相加。
假设我有以下数据库条目:
名字
会
威尔史密斯
威尔-史密斯
威尔-史密斯
我正在使用以下查询:
Query query = queryBuilder
.keyword()
.onField("firstName")
.matching(input)
.createQuery();
现在我正在寻找以下输入:
Will -> returns 所有 4 个条目,生成的查询如下:FullTextQueryImpl(firstName:will)
Will Smith -> 还 returns 所有 4 个条目生成的查询如下:FullTextQueryImpl(firstName:will firstName:smith)
Will - Smith -> 还 returns 所有 4 个条目,生成的查询如下:FullTextQueryImpl(firstName:will firstName:smith) ?根据 Lucene Query Syntax?
,“-”在哪里,或者它不应该禁止“-”之后的所有内容
威尔-史密斯 -> 同上
Will-Smith -> 这里我尝试使用反斜杠,但结果相同
Will -Smith -> 同上
第二个问题: 假设我有以下数据库条目,其中没有数字结尾的条目始终存在,而带有数字结尾的条目可能在数据库中。
对此的 Lucene 查询会是什么样子?
名字
会
威尔1
威尔2
您可以尝试使用 Lucene 分析器,看看幕后发生了什么。这里有教程:https://www.baeldung.com/lucene-analyzers
分词器是可插入的,因此您可以更改处理特殊字符的方式。
第一个问题: 有人可以向我解释 Hibernate Search 中的 lucene 查询如何处理特殊字符。我阅读了有关 Hibernate search and also the Lucene Regexp Syntax 的文档,但不知何故它们并没有与生成的查询和结果相加。
假设我有以下数据库条目:
名字 |
---|
会 |
威尔史密斯 |
威尔-史密斯 |
威尔-史密斯 |
我正在使用以下查询:
Query query = queryBuilder
.keyword()
.onField("firstName")
.matching(input)
.createQuery();
现在我正在寻找以下输入:
Will -> returns 所有 4 个条目,生成的查询如下:FullTextQueryImpl(firstName:will)
Will Smith -> 还 returns 所有 4 个条目生成的查询如下:FullTextQueryImpl(firstName:will firstName:smith)
Will - Smith -> 还 returns 所有 4 个条目,生成的查询如下:FullTextQueryImpl(firstName:will firstName:smith) ?根据 Lucene Query Syntax?
,“-”在哪里,或者它不应该禁止“-”之后的所有内容威尔-史密斯 -> 同上
Will-Smith -> 这里我尝试使用反斜杠,但结果相同
Will -Smith -> 同上
第二个问题: 假设我有以下数据库条目,其中没有数字结尾的条目始终存在,而带有数字结尾的条目可能在数据库中。 对此的 Lucene 查询会是什么样子?
名字 |
---|
会 |
威尔1 |
威尔2 |
您可以尝试使用 Lucene 分析器,看看幕后发生了什么。这里有教程:https://www.baeldung.com/lucene-analyzers
分词器是可插入的,因此您可以更改处理特殊字符的方式。