将Lucene查询转换为Solr

将Lucene查询转换为Solr,solr,lucene,Solr,Lucene,我有以下Lucene查询,需要将其转换为Solr(V3.5)查询: 如果不知道splitinputstringspace和splitinputstringspace2之间的区别,这有点困难。在任何情况下,对于第一部分,假设Solr模式中的HOLIDAY\u字段命名为HOLIDAY,等等。您应该能够使用PHP或任何前端语言来构造查询,如下所示: 对于给定字符串中的每个单词,添加+holiday:word。(为什么这一行在Java代码中出现两次?) 然后添加说明:1。 然后,对于每个带有通配符(*或

我有以下Lucene查询,需要将其转换为Solr(V3.5)查询:


如果不知道
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);
}