私は2つのインデックス、1つはメタデータ用、もう1つはテキスト用です。私はクエリ内のすべてのフィールド検索を削除し、ユーザーが検索したデフォルトフィールド"help and title:carpool"私は助けの部分、アイデアだけを欲しいですか?luceneはデフォルト以外のフィールドでクエリを無視する
0
A
答えて
1
BooleanQueryの木の上にトラバースと関連のエントリターム(「ヘルプ」)
1
を削除。これは、あなたのコードはどのように見えるかの球場である:これは何
public static void removeNonDefault(BooleanQuery query, String defaultField) {
List<BooleanClause> clauses = (List<BooleanClause>)query.clauses();
Iterator<BooleanClause> iter = clauses.iterator();
while(iter.hasNext()) {
BooleanClause clause = iter.next();
Query subQuery = clause.getQuery();
if(subQuery instanceof BooleanQuery) {
removeNonDefault((BooleanQuery)subQuery, defaultField);
} else if(subQuery instanceof TermQuery) {
if (!((TermQuery) subQuery).getTerm().field().equals(defaultField)) {
iter.remove();
}
}
}
}
さはとTermQuery
秒を削除しますBooleanQuery
からのデフォルト以外のフィールドを返し、サブブール値のクエリに再帰的にダウンします。
このコードは完全ではありません。状況に応じて、フレーズクエリや一定のスコア範囲のクエリなど、心配すべき種類のクエリがさらに存在する可能性があります。
この関数を呼び出す前に必ずquery.rewrite()
を実行して、任意のワイルドカードクエリをブール型クエリに変換してください。
関連する問題
- 1. デフォルト以外の関数の値は無視されます
- 2. ルート以外のフォルダを無視する
- 3. Java Luceneのトラブルシューティングフィールドを無視する
- 4. Zend_Dbは私のデフォルトのフィールド値を無視しています!
- 5. C#XmlSerializerはxs:attributeをxs:string以外の型で無視します
- 6. SOLRクエリのいくつかのフィールドを無視する方法
- 7. Moshiフィールドを無視する
- 8. ジャクソンはデフォルトで不明なフィールドを間違って無視しています
- 9. Luceneは検索キーワードのキーワードを無視します
- 10. フィールド依存関係を持つLuceneクエリ
- 11. Apache Olingoでフィールドを無視する
- 12. Json.netでnullフィールドを無視する
- 13. Java:Iteratorでキャストすると文字列型以外の整数を無視する
- 14. Mercurialで特定のサブディレクトリ以外のすべてを無視する
- 15. Mercurial HGRC Forceデフォルトを無視する
- 16. KIbanaクエリで+ハイフンを無視する
- 17. Luceneのクエリは
- 18. Lucene QueryParserは検索用語 "BE"を無視します
- 19. モチがコトリンのフィールドを無視する
- 20. DataContractSerializerのフィールド順序を無視する
- 21. NuGet Pack:デフォルトは無視されます。
- 22. C#で例外を無視する
- 23. hgignore:特定のファイル以外のすべてのファイルを無視するヘルプ
- 24. ストリーム定義:1つのファイルタイプ以外のすべてのファイルを無視する
- 25. ColdFusion以外のクエリのクエリ
- 26. デフォルトのタイムゾーン以外のUILocalNotification
- 27. デフォルト以外のシェルコマンドのサブプロセス
- 28. Vuejsでは、デフォルトのルータビュー以外のコンポーネントをレンダリングする方法
- 29. デフォルト以外のglibcでプログラムをコンパイル
- 30. NHibernateでデフォルト以外のコンストラクタを使う
これを行う場所はどこですか? –