私はsunspot_railsのセットアップを終えたばかりで、1つのことを除いてうまく機能しているようです. 以下のように3つのレコードを作成した後
- 名前=ジョン
- 名前=ジョン2
- 名前=ジョン3
「ジョン」というキーワードで検索すると、最初のレコードしか表示されません。完全一致のようです。それらすべてを検索結果として表示させたいのですが。
これはデフォルトで発生するはずですか?または、何か間違った設定をしましたか??
私はsunspot_railsのセットアップを終えたばかりで、1つのことを除いてうまく機能しているようです. 以下のように3つのレコードを作成した後
「ジョン」というキーワードで検索すると、最初のレコードしか表示されません。完全一致のようです。それらすべてを検索結果として表示させたいのですが。
これはデフォルトで発生するはずですか?または、何か間違った設定をしましたか??
全文検索で部分文字列を返したい場合は、
https://github.com/sunspot/sunspot/wiki/Matching-substrings-in-fulltext-search
sunspot_solr.rb
また、結果のページネーション用のファイルを myapp/config/initializers/ に追加することもできます:
Sunspot.config.pagination.default_per_page = 100
この場合、100 件の結果を返します。
追加した:
あなたのschema.xml
ファイルはyourappfolder/solr/conf
<filter class="solr.NGramFilterFactory"/>
また、任意の部分文字列に一致するように追加することもできます。
これはschema.xmlの私の特定の設定です:
<fieldType name="text" class="solr.TextField" omitNorms="false">
<analyzer>
<tokenizer class="solr.StandardTokenizerFactory"/>
<filter class="solr.StandardFilterFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>
<fieldtype class="solr.TextField" name="text_pre" positionIncrementGap="100">
<analyzer type="index">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.NGramFilterFactory" minGramSize="2" maxGramSize="10"/>
<filter class="solr.ISOLatin1AccentFilterFactory"/>
<filter class="solr.TrimFilterFactory" />
<filter class="solr.EdgeNGramFilterFactory" minGramSize="2" maxGramSize="10"/>
</analyzer>
<analyzer type="query">
<tokenizer class="solr.WhitespaceTokenizerFactory"/>
<filter class="solr.LowerCaseFilterFactory"/>
<filter class="solr.ISOLatin1AccentFilterFactory"/>
<filter class="solr.TrimFilterFactory" />
</analyzer>
</fieldtype>
私にとっては、すべてのキーワードの完全な文字列と部分文字列で問題なく動作します。変更を有効にするために、サーバーを再起動してモデルのインデックスを再作成することを忘れないでください。
よろしく!
ありがとう!!!
女の子のコントローラーからブロックする(girls_controller.rb)
def index
@search = Girl.search do
fulltext params[:search]
end
@girls = @search.results
# @girls = Girl.all
#
# respond_to do |format|
# format.html # index.html.erb
# format.json { render json: @girls }
# end
end
女の子モデルからのブロック(girl.rb)
searchable do
text :name_en, :name_es, name_ja
end