具有特殊字符的 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

分词器是可插入的,因此您可以更改处理特殊字符的方式。