Hibernate搜索通配符未返回期望值

艾梅巴

我在模型中定义了一个字段:

@Column(name = "name")
@Field(index = Index.YES, analyze = Analyze.YES, store = Store.NO)
private String name;

我的查询是

public Result search(String term, int offset, int limit) {
    WildcardQuery regexQuery = new WildcardQuery(new org.apache.lucene.index.Term("name", "*" + term + "*"));

    QueryBuilder qb = getFullTextSession().getSearchFactory().buildQueryBuilder().forEntity(Company.class).get();
    org.apache.lucene.search.Query query =
            qb.bool().should(qb.phrase().onField("address.street").sentence(term).createQuery())
            .should(regexQuery)
            .createQuery();

    FullTextQuery hibQuery = getFullTextSession().createFullTextQuery(query, Company.class);

    hibQuery.setFirstResult(offset);
    hibQuery.setMaxResults(limit);

    Result result = new Result();
    result.total = hibQuery.getResultSize();
    result.items = hibQuery.list();

    return result;
}

我在“ Intersprint GmbH”数据库(也已建立索引)中具有价值。如果我调用该方法:

search(“ Interspr”);

我希望得到这个实体,但结果是空的。有什么建议我该如何建立一个“包含”查询?

哈代

我的猜测是大写。我假设“ Intersprint GmbH”被索引为两个标记-“ intersprint”和“ gmbh”(全部小写,因为应用了分析器。在查询时,您使用带有给定术语“ Interspr”的WildcardQuery。没有应用分析器在这种情况下,这意味着小写的“ intersprint”和通配符查询“ Inter之间没有匹配项。您可以通过使用Luke检查索引来确认这一点。

作为解决方案,您可以使用QueryParser(也使用分析器),也可以使用QueryBuilder#keyword#wildcard()来应用分析器。在后一种情况下,甚至应该透明地为您挑选合适的分析仪。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Spock存根未返回期望值

来自分类Dev

COUNTIF公式未返回期望值

来自分类Dev

Ruby命令未返回期望值

来自分类Dev

BigInteger数学函数未返回期望值

来自分类Dev

date.getTimezoneOffset()未返回期望值

来自分类Dev

Mock上的设置未返回期望值

来自分类Dev

正则表达式未返回期望值

来自分类Dev

math.h中的函数未返回期望值

来自分类Dev

日期时间转换未返回期望值

来自分类Dev

字符串数组未返回期望值

来自分类Dev

DATEDIF()未返回期望值,如何计算月龄?

来自分类Dev

弹性搜索通配符搜索

来自分类Dev

c的除法未给出期望值

来自分类Dev

awk OFS未产生期望值

来自分类Dev

任务ContinueWith不返回期望值

来自分类Dev

标量UDF不返回期望值

来自分类Dev

阿拉伯文化日期时间解析未返回期望值

来自分类Dev

具有日期条件的SQL窗口函数未返回期望值

来自分类Dev

Redshift中的REGEXP_SUBSTR函数未返回期望值

来自分类Dev

汇总列中的总值时,SQL查询未返回期望值

来自分类Dev

在一种特定情况下,函数未返回期望值

来自分类Dev

阿拉伯文化日期时间解析未返回期望值

来自分类Dev

字符串枚举未打印期望值

来自分类Dev

Verilog在简单分配中未输出期望值

来自分类Dev

Mockito什么时候/然后不返回期望值

来自分类Dev

preg_match_all不返回期望值

来自分类Dev

嵌套匹配的索引不返回期望值

来自分类Dev

XNA Rectangle.Center不返回期望值

来自分类Dev

递归函数未在PHP中返回期望值