Luceneでは、TermQueryを使用してフィールドでテキストを検索できます。たくさんのフィールドや検索可能なフィールドのすべてのキーワードを検索する方法が不思議です。すべてのフィールドを検索するには?
答えて
二つは
1)インデックス・タイム・アプローチに近づく:キャッチオールフィールドを使用します。これは、すべてのフィールドのすべてのテキスト(入力文書のテキスト全体)を追加し、結果としてその巨大なテキストを1つのフィールドに配置することにほかなりません。キャッチオールフィールドとして機能するように、インデックス作成中に追加のフィールドを追加する必要があります。
2)検索時のアプローチ:BooleanQueryを使用して、複数のクエリ(TermQueryインスタンスなど)を結合します。これらの複数のクエリは、すべてのターゲットフィールドをカバーするように構成できます。
Exampleこの記事の最後にチェックしてください。
実行時にターゲットフィールドリストを知っている場合は、アプローチ2を使用します。それ以外の場合は、第1のアプローチを使用する必要があります。
既に持っているものより多くのものを索引付けする必要もなく、異なる照会を組み合わせる必要もないもう1つのアプローチは、MultiFieldQueryParser
を使用しています。
検索対象のフィールドとクエリのリストを提供することができます。
MultiFieldQueryParser queryParser = new MultiFieldQueryParser(
Version.LUCENE_41,
new String[]{"title", "content", "description"},
new StandardAnalyzer(Version.LUCENE_41));
Query query = queryParser.parse("here goes your query");
これは、Javaで書かれた元のluceneライブラリで行う方法です。 MultiFieldQueryParser
がlucene.netでも利用可能かどうかはわかりません。
「MultifieldQueryParser」を使用してすべてのフィールドを検索する簡単な方法の1つは、IndexReader.FieldOption.ALLです。
ここはC#の例です。
Directory directory = FSDirectory.Open(new DirectoryInfo(HostingEnvironment.MapPath(VirtualIndexPath)));
//get analyzer
Analyzer analyzer = new StandardAnalyzer(Version.LUCENE_29);
//get index reader and searcher
IndexReader indexReader__1 = IndexReader.Open(directory, true);
Searcher indexSearch = new IndexSearcher(indexReader__1);
//add all possible fileds in multifieldqueryparser using indexreader getFieldNames method
dynamic queryParser = new MultiFieldQueryParser(Version.LUCENE_29, indexReader__1.GetFieldNames(IndexReader.FieldOption.ALL).ToArray(), analyzer);
dynamic query = queryParser.Parse(Criteria);
TopDocs resultDocs = null;
//perform search
resultDocs = indexSearch.Search(query, indexReader__1.MaxDoc());
dynamic hits = resultDocs.scoreDocs;
click here vb.netに優れた全体像の説明のための
ここでは、ダックの入力(つまり、「動的」キーワード)を使用する点はありません。たぶん、あなたは 'var'で型interenceを使いたがっていますか? –
- 1. 空の検索フィールドを送信するときに検索フィールドをすべて停止する方法
- 2. 固定フィールドですべてのフィールドを検索
- 3. すべてのsolrフィールドの値を検索する
- 4. Podio API:アイテムコメント以外のすべてのフィールドを検索するには?
- 5. テーブルのすべてのフィールドで入力キーワードを検索するには
- 6. Roslynフィールドに割り当てられたすべての検索
- 7. フィールドのセットを除くすべてのフィールドで検索するMongoDBシェルスクリプト
- 8. oracleテーブルのすべてのフィールドで特定の値を検索
- 9. 検証は常にすべてのフィールド
- 10. CKANでフィールドを検索するには
- 11. UISearchbar swiftのすべてのフィールドを検索3
- 12. lucene.netでは、フィールド名を指定せずにコンテンツを検索できます。インデックスに登録されているすべてのフィールドを検索しますか?
- 13. Googleの検索フィールドを入力して検索する
- 14. 弾性検索 - すべてのフィールドにデフォルトのアナライザーを設定する
- 15. PostgreSQLですべてのJSONフィールドを検索
- 16. すべてのフィールドでintまたはstringを検索する方法
- 17. 紺碧の検索のフィールドに基づいて検索する方法は?
- 18. 検索フィールドにすべての値を表示する - Dynamics CRM 2015 Web
- 19. すべてのフィールドからのSQL検索
- 20. 検索すべての非
- 21. すべてのドキュメントが検索されているsolr検索
- 22. 構文SQLテーブルのすべてのフィールドを検索するときのエラー
- 23. 一度にすべてのフィールドを検証する方法は?
- 24. Delphiのすべてのサブディレクトリでファイルを検索するには
- 25. URLのフィールドを弾性検索用に並べ替える
- 26. パターンを検索してその中のすべてをルビーで検索する
- 27. mysqlを使ってシリアル化フィールドを検索するには?
- 28. 検索欠落しているフィールドは
- 29. すべてのパッケージを検索してテーブルやカラムを検索する
- 30. BK - ツリー検索すべて
感謝を同じquesitonに私の透過性の答えをチェックアウトします。最初のアプローチは、同じインデックスにさまざまなタイプの製品を保存するときに使用する方法です。たとえば、プリンタとモニターのように、各フィールドごとに異なるフィールドが存在するが、単純な検索文字列で "フルテキスト"検索を使用し、一致する商品。 – nothingisnecessary