【发布时间】:2014-05-04 23:50:28
【问题描述】:
我正在进行构面搜索,其中一项要求是从构面下拉列表中选择 id 值。 id 值将在 1 位到 16 位范围内,但在数据中这些 id 值将从 8 位到 16 位。
我必须支持来自 UI 和 REST api 的以下用例。
示例查询:
http://localhost:7001/app/api/search/meta.type:typeA AND id:value?results=facet:id
要求是根据为属性 id 传递的值来更正查询。
如果传递值的长度小于 8 位。即如果小于 99999999,我必须进行正则表达式搜索,否则正常匹配搜索。
例如:
1)
实际:+meta.type:typeA +id
修改 +meta.type:typeA +id:8 +id:8*
2)
实际 +meta.type:typeA +id:4567
修改 +meta.type:typeA +id:4567 +id:4567*
3)
实际 +meta.type:typeA +id:12345678
修改 +meta.type:typeA +id:12345678 +id:12345678*
4)
实际 +meta.type:typeA +id:123456789
修改 +meta.type:typeA +id:123456789
查询类型为 BooleanQuery。
我试过关注,但对查询值没有影响。 (将另一个值添加到查询中,因为第一个值不会返回任何内容)
Query [] termArray = new Query [1];
BooleanQuery bq = new BooleanQuery();
bq.add(new TermQuery(new Term("id", queryKeyValue + "*")), BooleanClause.Occur.MUST);
termArray[0] = Query.mergeBooleanQueries(bq);;
query.combine(termArray);
我正在使用 Lucene 3.6 库。
我有一个疑问,这种查询更新是否可行。
如果这是有效的场景并且可以实现,有人可以帮助我吗?
【问题讨论】: