2017-01-13 13 views
1

私が使用している宝石searchkick &宝石neo4jSearchkick neo4j:検索が機能していませんか?

class User 
    include Neo4j::ActiveNode 

    property :first_name 
    property :last_name 
    property :email 

    searchkick callbacks: :async 

    def search_data 
    { 
     first_name: first_name, 
     last_name: last_name, 
     email: email 
    } 
    end 
end 

(User.search 'スレシュ'、フィールド:[:FIRST_NAME、:LAST_NAME])。 => 22

(ユーザーを数えます。検索 'sures'、フィールド:[:FIRST_NAME、:LAST_NAME]。)私はを入力しても、すべての結果を持ちたい => 0

を数えます、助けてください?

ブライアン提案

(User.search( 'SU'、フィールド:[:FIRST_NAME、:LAST_NAME]、スペルミス:{edit_distance:2}))。地図(&:FIRST_NAME)

=> [ "サム"、 "Marilet"、 "AA"、 "ASD"、 "マリセル"]

(User.search( '確認'、フィールド:[:FIRST_NAME、:LAST_NAME]、スペルミス:{edit_distance:3}))。地図(&:ファーストネーム)

あなたは edit_distanceオプションを使用することができるはず

=> [ "Herlinda"、 "ブレント"、 "アンディ"、 "スレシュ"]

答えて

0

@ブレインズの提案ともう少し研究を見て、私はそれに続く変更によって達成することができました

モデルがどのように見えるの更新:

クエリがどのように見えるの更新
class User 
    include Neo4j::ActiveNode 

    property :first_name 
    property :last_name 
    property :email 

    searchkick word_start: [:first_name, :last_name] 


    def search_data 
    { 
     first_name: first_name, 
     last_name: last_name 
    } 
end 

:変更は、データを再インデックスに私は出力を貼り付けている@brian User.reindex

1

https://github.com/ankane/searchkick#misspellings

例:

User.search('suresh', fields: [:first_name, :last_name], misspellings: {edit_distance: 2}) 
+0

感謝を忘れないようにした後

users = User.search('su', operator: "or", fields: [:first_name, :last_name], misspellings: {below: 5}, match: :word_start, where: {id: mutual_stay_pal_ids}, page: params[:page], per_page: 10) 

あなたの答えはgvenですが、何かが間違っているようですね? –

+0

最初に 'User.reindex'を試してみるかもしれません。 –

+0

私が行った変更を正確に追加しました。 –

関連する問題