私はDrupalモジュール内でプログラム的にapachesolrクエリを作成していますが、いくつかの面で成功していますが、まだ他の人とは苦労しています。Apachesolrクエリ - フィールド内のテキストでフィルタリング
これまでのところ、私は特定のテキストを検索し、次のコードでによってフィルタリングされる条件に基づいて結果を制限することができ、クエリを構築することができました:
$subquery_region->addFilter('tid', $term->tid);
$query->addFilterSubQuery($subquery_region, 'OR', 'AND');
私がしたいのですがどのようなノード内の特定のフィールド内に特定のテキストを見つけるためのフィルタを追加することによって、検索をさらに絞り込むことができます。誰でもこれを行うことができましたか?
私はオンライン研究してきましたと、このようなメインの検索クエリに直接
$query->addParam('fl', 'ss_my_field');
$query->addFilter("ss_my_field", "field_substring_to_search_for");
としてだけでなく、メインの検索に追加するサブクエリの中にそれを飛び出しをフィルタの追加など、さまざまな方法の多くを試してみましたクエリ
$subquery_test = apachesolr_drupal_query("Test");
$subquery_test->addParam('fl', 'ss_my_field');
$subquery_test->addFilter("ss_my_field", "field_substring_to_search_for");
$query->addFilterSubQuery($subquery_test, 'OR', 'AND');
しかし、これらのどれも動作していません。私はフィルターとして追加しているフィールドに部分文字列が存在することを知っていても、空のセットを返しています。インデックスが付けられています。私は、apacheorlビューモジュールを通して、検索インデックスにそのフィールドが設定され、部分文字列が存在することを確認できたことを確認しました。
構文やクエリの作成方法に問題はありますか?
特定のフィールド内でテキストを検索するフィルタを追加する方法が分かっている場合は、共有してください。それはaddFilter関数でさえできないかもしれませんが、これまでに私が試みてきたのはこれだけです。 ありがとう!
ラム、これまであなたの助けに感謝します。最初の部分はきれいに働いて、私のフィールドがインデックスに追加されたことがわかりました。ただし、記述されているようにaddFilter()関数でそれらを追加すると何も返されません。フォーマットに関する他のアイデア。私は私が今までに試したことのあるすべてを含めるように私の質問を編集しています... –