2017-01-12 6 views
0

私はLuceneインデックスの1つに問題があります。私は基本的なブール検索を実行しようとしていますが、検索は他のインデックスでも機能しますが、私のproductsインデックスでは、私はエラーが出ています: "フィールド 'Description'には文書よりも条件があります。トークン化されたフィールド。Lucene:フィールドには文書よりも多くの用語がありますが、トークン化されたフィールドを並べ替えることは不可能です

は、ここに私のクエリを使用してコードです:

var luceneIndexDataContext = new BcsUsLuceneDataContext("rewardproducts", _dbName); 
string fieldToQuery = "description"; 
bool sortDirection = query.sortDirection.ToLower().Equals("desc"); 

QueryParser parser = new QueryParser(fieldToQuery, new StandardAnalyzer()); 
Query q = parser.Parse("\"" + query.keywords.ToLower() + "\""); 

var booleanQuery = new BooleanQuery(); 
booleanQuery.Add(q, BooleanClause.Occur.MUST); 

return luceneIndexDataContext.BooleanQuerySearch(booleanQuery, fieldToQuery, sortDirection) 
    .Where(i => i.Fields["eligibleforpurchase"] == "1"); 

private List<SkinnyItem> BooleanQuerySearch(BooleanQuery query, string sortField, bool sortReverse) 
{ 
    using (QueryRunner runner = new QueryRunner(IndexName)) 
    { 
     if (sortField != string.Empty) 
     { 
      return runner.RunQuery(query, false, sortField, sortReverse, 0, 1000); 
     } 
     else 
     { 
      return runner.RunQuery(query, false); 
     } 
    } 
} 

私は私のインデックスに問題がなければならないと思いますが、私は問題が何であるかわかりません。商品インデックスは他の環境(QA環境など)で動作していますが、QAのインデックスをローカルにコピーすると正常に動作しますが、削除して再構築するとエラーが発生します。私は、インデックスや何かの項目のいくつかに問題がなければならないと思っていますが、どうすればそれを見つけることができますか?

答えて

0

基本的には、問題は、エラーメッセージ内に隠れている:

Luceneには、トークン化されたフィールドで並べ替えることができませんでした。公式ドキュメントによると:

The fields used to determine sort order must be carefully chosen. Documents must contain a single term in such a field, and the value of the term should indicate the document's relative position in a given sort order. The field must be indexed, but should not be tokenized, and does not need to be stored (unless you happen to want it back with the rest of your document data). In other words:

document.add (new Field ("byNumber", Integer.toString(x), Field.Store.NO, Field.Index.NOT_ANALYZED));

、あなたがStandardAnalyzerを使用して、ルールに違反するので、それは仕分けていないと、それはあなたのために働くことはありません。 QAやその他の環境で何をやっているのか分かりませんが、問題は同じでなければなりません(QA envに問題はないかもしれません)

ソート用に選択する必要があるいくつかの追加情報 - https://lucene.apache.org/core/6_0_0/core/org/apache/lucene/search/Sort.html

関連する問題