-1

次のLuceneクエリがあり、それをSolr(v 3.5)クエリに変換する必要があります。

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);
}
4

1 に答える 1

1

これは、との違いを知らずに行うのは少し難しいsplitInputStringOnSpaceですsplitInputStringOnSpace2。いずれにせよ、最初の部分では、SolrスキーマなどHOLIDAY_FIELDで名前が付けられていると仮定するとholiday、PHPまたはフロントエンド言語が次のようにクエリを作成するために使用できるはずです。

指定された文字列のそれぞれwordに、を追加し+holiday:wordます。(Javaコードでこの行が2回発生するのはなぜですか?)次に、を追加しdescription:1ます。次に、ワイルドカードを使用してクエリ用語ごとに(*または?、それも追加します-そのまま、description:word

これらはすべてスペースで区切り、文字列全体q=をSolrクエリの一部に入れてください。

最後に、なぜこれをすべて行うのですか?最後のLuceneクエリを印刷してみませんか?クエリの構文は非常に似ているため、Solrではそのままで機能する可能性があります。

于 2012-05-16T18:33:27.260 に答える