私は本の索引を付けており、本のさまざまなフィールドでテキスト検索を実行しています。
- タイトル
- 著者
- 本の要約
書籍名、著者名、書籍の概要を連結してインデックスを作成しようとしましたが、検索結果の一部が期待どおりの結果を返さず、その理由がわかりません。
これらすべてのフィールドを同時に検索できるように、本にインデックスを付ける正しい方法は何ですか?
-
コードサンプルは次のとおりです。
book_text_index = "#{book.name} #{book.author} #{book.summary}"
idx.document("book_502").add({ :text => book_text_index,
:book_id => "#{book.id}",
:name => "#{book.name}",
:author => "#{book.author}",
:summary => "#{book.summary}"
})
そして、これが「孫子」の本「孫子」で得た結果の例です。
著者名("tzu")を検索すると、本が返されます。
idx.search( "tzu"、:function => 1、:fetch =>'text')['results']
=> [{"text" => "L'art de la guerre Sun Tzu Youboox libres de droits Traduitpourlapremièrefois..."、 "docid" => "book_502"、 "query_relevance_score" =>-2967.0}]
しかし、本のタイトルの一部( "guerre")を検索しても、結果に本が表示されません。
idx.search( "guerre"、:function => 1、:fetch =>'book_id')['results']。map{| result | result ["docid"]}
=> ["book_1962"、 "book_1963"、 "book_1951"、 "book_1832"、 "book_1812"、 "book_1787"、 "book_1775"、 "book_1778"、 "book_1730"、 "book_1740"]
book_502が結果に含まれていないことがわかります。