I have these queries in Lucene 2.9.4, is there a way to convert these
exactly to Solr 3.4 but using only the solrconfig.xml? I will figure out the
queries but I wanted to know if it is even possible to go from here to
having something like this:

  <requestHandler name="/custom" class="solr.SearchHandler">
    ... queries
  </requestHandler>

So the front end just calls /custom?q=what and the requestHandler will build
the queries accordingly.
I don¹t want to put any of this logic in the front end, so I want to package
a requestHandler to do exactly what it was done in Lucene.
I have a lot of these type of queries built in Lucene that I have to migrate
to Solr, I don¹t want to write a different query parser plugin for each of
those.

Thanks in advance,
Maria


Example Lucene queries:


String tmpQuery1 = what.toLowerCase().trim();

Query wildcardkeyword_atts = new PrefixQuery(new Term("keyword_atts_exact",
tmpQuery1));
Query wildcardkeyword = new PrefixQuery(new Term("keyword_exact",
tmpQuery1));

BooleanQuery keywordExactQuery = new BooleanQuery();
keywordExactQuery.setBoost(10);
keywordExactQuery.add(new TermQuery(new Term("keyword_atts_exact",
tmpQuery1)), BooleanClause.Occur.SHOULD);
keywordExactQuery.add(new TermQuery(new Term("keyword_exact", tmpQuery1)),
BooleanClause.Occur.SHOULD);

BooleanQuery bkeywordAtts = new BooleanQuery();
PhraseQuery pPhraseKeywordAtt = new PhraseQuery();
pPhraseKeywordAtt.setSlop(2);

StringReader r2 = new StringReader(what);
TokenStream stream3 = analyzer.tokenStream(null, r2);
TermAttribute termAtt = (TermAttribute)
stream3.addAttribute(TermAttribute.class);
while (stream3.incrementToken()) {
    String sTerm = termAtt.term().trim();
    TermQuery tKeywordAtts = new TermQuery(new Term("keyword_atts", sTerm));
    pPhraseKeywordAtt.add(new Term("keyword_atts", sTerm));
    bkeywordAtts.add(tKeywordAtts, BooleanClause.Occur.MUST);
}

BooleanQuery m_mainQuery = new BooleanQuery();
m_mainQuery.add(wildcardkeyword_atts, BooleanClause.Occur.SHOULD);
m_mainQuery.add(wildcardkeyword, BooleanClause.Occur.SHOULD);
m_mainQuery.add(keywordExactQuery, BooleanClause.Occur.SHOULD);
m_mainQuery.add(pPhraseKeywordAtt, BooleanClause.Occur.SHOULD);

BooleanQuery m_finalQuery = new BooleanQuery();
m_finalQuery.add(new TermQuery(new Term("typename", "industry.category")),
BooleanClause.Occur.MUST);
m_finalQuery.add(m_mainQuery, BooleanClause.Occur.MUST);

Reply via email to