0

私はSOや他の場所をオンラインで調べましたが、私の問題に固有のものは見つかりませんでした。他の誰かがそれを経験したのだろうか?そして、彼らはどのように解決しましたか?

マルチワードフィールドのワイルドカード検索を実行しようとしています。これは、最初の単語を入力している間は正常に機能しますが、2番目の単語を入力し始めるとすぐに、最初の単語は無視されます。

私のインデックスの各ドキュメントは1人の人物を表し、インデックス付きフィールド「name」があります。

<field name="name" type="string" indexed="true" stored="true" required="true" />

何が起こるべきか:

「BruceRob」と入力すると、ドキュメント「BruceRobertson」が返されます。

何が起こっている:

「Bru」と入力すると、「BruceRobertson」返されます。しかし、2番目の単語(たとえば「BruceRob」)を開始するとすぐに、「Rob」で始まる結果が返され始めます。前の単語は完全に無視されます。

PHPクライアントライブラリを使用しています。生成されるクエリは次のようになります。

fq=type%3Aperson&sort=id+desc&wt=json&json.nl=map&q=name%3Abruce+rob%2A&start=0&rows=3

どんな助けでも大歓迎です。

編集:PHPコード

$options = array('fq' => "type:person",'sort' => 'id desc');
$results = $this->solr->search('name:' . $val . '*', 0, 3, $options);
4

1 に答える 1

1

名前フィールドでブルースを検索していますname:bruceが、robはフィールド名で修飾されていないため、スキーマで定義されてrob*いるデフォルトのフィールドに対して検索します。defaultSearchField

于 2012-02-22T15:14:03.100 に答える