2

私は自分が正しい方法で物事を行っているかどうかを確認するよう求めているだけです。django アプリに高度な検索機能を追加したいと考えており、バックエンドとして SOLR を使用して Haystack のテストを開始しました。

部分一致がどうしても必要なので、schema.xml を変更して、haystack で定義されたテキスト フィールドが次のように nGram 型になるようにしました。

    <field name="text" type="ngram" indexed="true" stored="true" multiValued="false" />

haystack に含まれるデフォルトのビューで部分一致が機能するようになったため、John というモデルの場合、「Joh」を検索すると、「ohn」または任意の 3 文字の組み合わせであるため、見つかりました。

これは正しい方法ですか?パフォーマンスの問題により、テキスト フィールドがデフォルトで ngram タイプにならないのはなぜですか?

どうもありがとう!

4

1 に答える 1

0

See this and this. I'm not sure how it responds in terms of preformance, but you can achieve the partial match behavior, also using ngrams, without having to touch your solr schema. Just define your index's text fields as EdgeNgramField.

于 2013-04-18T12:38:09.057 に答える