最近、私のdjangoモデルの1つを検索するためにsolrとhaystackを設定しました。haystackによって構築されたデフォルトのsolrスキーマを変更して、NGramTokenizerFactory
:を使用しようとしました。
<fieldType name="text" class="solr.TextField">
<analyzer type="index">
<tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="32" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.NGramTokenizerFactory" minGramSize="3" maxGramSize="32" />
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
データベースに1つまたは2つの単語エントリがあり、ユーザーのクエリと照合します。たとえば、「犬」というタイトルのオブジェクトと「猫」というタイトルのオブジェクトがあるとします。ユーザーが「dogcat」を検索した場合、そのクエリのdogオブジェクトとcatオブジェクトの両方を返します。
同様に、「my cool website」を検索すると、「website」のフィールドが返されます。
solr管理インターフェースを使用して、クエリが一致していることを確認してみました。ここではすべて問題ないようです
::問題は、haystackのデフォルトの検索インターフェースを使用して同じクエリを検索する場合です。
ご覧のとおり、結果は見つかりません。私はKeywordFactoryとさまざまなsolr構成を使用してみました。私が間違っていなければ、クエリは一致しているはずです。なぜ干し草の山が空になっているのかわかりません。
これがそのような検索を行うための最良の方法であるかどうかについてのヘルプ/提案をありがとう。