0

我想写一个 Lucene WildcardQuery 并提到该字段应该以用于搜索的令牌开始和结束。如果我^box$在我的通配符查询中使用模式,它将无法工作。

4

2 回答 2

1

一种可能性是,如果这是典型情况,并且您不打算将此字段作为全文查询,则将其存储为StringField,并使用简单的TermQuery. 这使得您正在寻找的查询是微不足道的。如果这符合您的需求,那么它是理想的,因为您在这里只是设计索引以最好地支持您的需求。

如果您确实需要在其他地方对该字段进行全文搜索,我建议您在该字段的开头(也可能是结尾)放置一个唯一的已知术语。使用 PhraseQuery 将使这变得足够简单以实现。当然,在运行全文搜索的同一字段上运行这种查询方式对我来说似乎是一个非常奇怪的用例。

另一种可能性是使用 SpanQueries,尤其SpanFirstQuery是类似的东西:

SpanFirstQuery query = new SpanFirstQuery(new SpanTermQuery(new Term(field, "box")), 1);
于 2013-06-11T15:57:42.487 回答
0

扩展 femtoRgon 的答案:愚蠢的 Lucene 技巧:精确匹配,开始于,结束于

于 2013-06-14T19:50:11.743 回答