1

ブール検索 'sname:'.$user->name.' を実行しようとしていました。または sname:xxxxxx; 、sname:xxxxxx; のような結果が得られません。正常に動作します。クエリ変更フックで mm=1 を追加しました。誰かがこれを達成する方法を教えてくれますか?

これが私のコードです.....

$keys = "";
$filters = 'sname:'.$user->name.' OR sname:xxxxxx;
//print($filters);
$solrsort = variable_get('apachesolr_search_taxonomy_sort', 'created desc');
$page = isset($_GET['page']) ? $_GET['page'] : 0;
$_GET['retain-filters'] = 1;

try {
//stolen from search.module (search_data)
$data = apachesolr_search_execute($keys, $filters, $solrsort, 'search/apachesolr_search', $page);
$results = theme('search_results', $data, $type);
} catch (Exception $e){
watchdog('apachesolr', t('Error running search'));
}

function reports_apachesolr_modify_query(&$query, &$params, $caller) {
// I only want to see articles by the admin!
$params['mm'] = 1;
}

前もってありがとう。

4

2 に答える 2

1

$ userオブジェクトは一部の場所では使用できないため、どこから呼び出しているかによって異なります。グローバルに呼び出す必要があります。コードの先頭に以下を追加します。

$keys = "";
global $user; //Add this line
$filters = 'sname:'.$user->name.' OR sname:xxxxxx';

また、xxxxxxの後に終了引用符がないことに注意してください。上記のコードに追加しました。

于 2009-11-02T18:02:01.987 に答える
0

2 番目の sname:?? を削除しようとしましたか? 私のSOLRフィルターは次のようになります。

(fname:carrie OR carol) 
AND
(lname:miller OR jones)
于 2011-07-08T18:39:13.373 に答える