0

複数の用語を使用する場合、操作の順序を制御することはできますか?

例えば、

Lucene.Net.Search.TermQuery tq1 = new Lucene.Net.Search.TermQuery(new Lucene.Net.Index.Term("location", "seattle"));
Lucene.Net.Search.TermQuery tq2 = new Lucene.Net.Search.TermQuery(new Lucene.Net.Index.Term("location", "portland"));
Lucene.Net.Search.TermQuery tq3 = new Lucene.Net.Search.TermQuery(new Lucene.Net.Index.Term("location", "spokane"));
Lucene.Net.Search.TermQuery tq4 = new Lucene.Net.Search.TermQuery(new Lucene.Net.Index.Term("type", "city"));

検索を適用するとき、上記の用語を適用して検索をフィルタリングし、食べ物を検索するとします...したがって、クエリ形式は次のようになります。

食品AND((tq1 OR tq2 OR tq3)AND tq4)

現在、以下の形式で構築することができました

{+xml:food +(location:seattle location:portland location:spokane +location:city)}

しかし、私はそれを次の形式で取得しようとしています

{+xml:food +(+(location:seattle location:portland location:spokane) +location:city)}

基本的に、私がやっていることはこのようなものです...

Lucene.Net.Search.BooleanQuery bq = new Lucene.Net.Search.BooleanQuery();
Lucene.Net.Search.BooleanQuery innerBQ = new Lucene.Net.Search.BooleanQuery();
bq.Add("xml:food", Lucene.Net.Search.BooleanClause.Occur.MUST);
foreach (Lucene.Net.Index.Term term in listOfTerms)
{
    Lucene.Net.Search.TermQuery tq = new Lucene.Net.Search.TermQuery(term));
    innerBQ.Add(tq, Lucene.Net.Search.BooleanClause.Occur.SHOULD);
}
innerBQ.Add("location:city", Lucene.Net.Search.BooleanClause.Occur.MUST);
bq.Add(innerBQ, Lucene.Net.Search.BooleanClause.Occur.MUST);

任意の提案をいただければ幸いです。

4

1 に答える 1

1

代わりにlocation:city句を追加する必要がありますbqinnerBQ

于 2012-12-12T14:13:12.293 に答える