【发布时间】:2021-06-21 14:15:17
【问题描述】:
第一个问题: 有人可以向我解释一下 Hibernate Search 中的 lucene 查询如何处理特殊字符。我阅读了有关 Hibernate search 和 Lucene Regexp Syntax 的文档,但不知何故,它们并没有与生成的查询和结果相加。
假设我有以下数据库条目:
| name |
|---|
| Will |
| Will Smith |
| Will - Smith |
| Will-Smith |
我正在使用以下查询:
Query query = queryBuilder
.keyword()
.onField("firstName")
.matching(input)
.createQuery();
现在我正在寻找以下输入:
Will -> 返回所有 4 个条目,并生成以下查询:FullTextQueryImpl(firstName:will)
Will Smith -> 还使用以下生成的查询返回所有 4 个条目:FullTextQueryImpl(firstName:will firstName:smith)
Will - Smith -> 还使用以下生成的查询返回所有 4 个条目: FullTextQueryImpl(firstName:will firstName:smith) ?根据Lucene Query Syntax,“-”在哪里或者不应该禁止“-”之后的所有内容?
Will-Smith -> 这里也一样
Will-Smith -> 在这里我尝试使用反斜杠但结果相同
Will -Smith -> 这里也一样
第二个问题:假设我有以下数据库条目,其中没有数字结尾的条目始终存在,而带有数字结尾的条目可能在数据库中。 对此的 lucene 查询会是什么样子?
| name |
|---|
| Will |
| Will1 |
| Will2 |
【问题讨论】:
-
你能提供一些澄清吗? (1) 您使用的是哪个版本的 Lucene?或者,如果更容易的话,哪个版本的 Hibernate Search? (2) 我不确定您显示搜索的方式是什么意思。例如,在
Will - Smith ->中,那个箭头->是什么意思? (3) 我不确定您所说的“- ...在哪里?”是什么意思?你的意思是它在结果中的什么位置?或者您需要将它放在查询中的什么位置?很难知道你在哪里卡住了。 -
(4) 您是否提供了自定义分析器?若有,详情为何? (5) 你在你的实体和你的名字字段上使用了哪些注释? (6) 您是否总是使用
.keyword()进行所有查询?所有这些点都会影响您的数据的索引方式以及查询返回的结果,因此如果我们能看到所有这些详细信息,可能会更容易提供帮助。
标签: java search lucene special-characters hibernate-search