将Lucene查询转换为Solr
我有以下Lucene查询,需要将其转换为Solr(V3.5)查询:将Lucene查询转换为Solr,solr,lucene,Solr,Lucene,我有以下Lucene查询,需要将其转换为Solr(V3.5)查询: 如果不知道splitinputstringspace和splitinputstringspace2之间的区别,这有点困难。在任何情况下,对于第一部分,假设Solr模式中的HOLIDAY\u字段命名为HOLIDAY,等等。您应该能够使用PHP或任何前端语言来构造查询,如下所示: 对于给定字符串中的每个单词,添加+holiday:word。(为什么这一行在Java代码中出现两次?) 然后添加说明:1。 然后,对于每个带有通配符(*或
如果不知道
splitinputstringspace
和splitinputstringspace2
之间的区别,这有点困难。在任何情况下,对于第一部分,假设Solr模式中的HOLIDAY\u字段
命名为HOLIDAY
,等等。您应该能够使用PHP或任何前端语言来构造查询,如下所示:
对于给定字符串中的每个单词
,添加+holiday:word
。(为什么这一行在Java代码中出现两次?)
然后添加说明:1
。
然后,对于每个带有通配符(*
或?
)的查询词,也按原样添加它,说明:word
确保用空格分隔所有这些字符串,并将整个字符串放入Solr查询的q=
部分
最后,为什么要这么做?为什么不打印出最终的Lucene查询?由于查询语法非常相似,它很有可能在Solr中开箱即用。我如何了解这种语法?我甚至在这里到处搜索,但找不到任何好的信息。你具体在找什么?该页面有足够的内容来构建…还有ch选中Lucene查询语法页面。您可能会在上找到此页面。
final String[] terms = splitInputStringOnSpace(input);
for (final String string : terms) {
booleanQuery.add(new TermQuery(new Term(DocumentFieldsConstants.HOLIDAY_FIELD, string)), Occur.MUST);
booleanQuery.add(new TermQuery(new Term(DocumentFieldsConstants.HOLIDAY_FIELD, string)), Occur.MUST);
}
booleanQuery.add(new TermQuery(new Term(DocumentFieldsConstants.DESCRIPTION_FIELD, "1")), Occur.SHOULD);
final String[] exactTerms = splitInputStringOnSpace2(input);
for (final String string : exactTerms)
{
final WildcardQuery wildcardQuery = new WildcardQuery(new Term(DocumentFieldsConstants.DESCRIPTION_FIELD, string));
booleanQuery.add(wildcardQuery, Occur.SHOULD);
}