Forum: Ferret Ferret C Indexer Error: Fields not stored in index?

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
E9c9fa832d241e26d08f67f41f912939?d=identicon&s=25 Error with Ferret C Indexer (Guest)
on 2006-04-22 03:12
Hello,
I am trying to get Ferret's C indexer to work on OpenSUSE 10 and
fastcgi.
Indexing documents appears to work correctly but when I try to display
the results I recieve the following error:

ActionView::TemplateError (undefined method `string_value' for
stored/uncompressed,indexed,tokenized,<title:Revit.jpg>:Ferret::Document::Field)
on line #17 of app/views/search/results.rhtml:
14: <%= render :partial => 'basic' %>
15: <ul class="search">
16: <% for result in @results
17: text = "<span class='heading'>" + result.field('title').string_value
+ "</span><br/>"
18: text += "<span class='subheading'>Posted by " +
result.field('created_by').string_value + " at " +
result.field('created_on').string_value + "</span> "
19: if !result.field('body').nil?
20:    description = strip_tags(result.field('body').string_value)

    #{RAILS_ROOT}/app/views/search/results.rhtml:17:in
`_run_rhtml_search_results'
    #{RAILS_ROOT}/app/views/search/results.rhtml:16:in `each'
    #{RAILS_ROOT}/app/views/search/results.rhtml:16:in
`_run_rhtml_search_results'
    /usr/lib/ruby/gems/1.8/gems/actionpack-1.12.1/lib/action_view/base.rb:314:in
`send'

It appears as if the indexer is not storing the actual field strings.
Data for the index is being pulled from a MySQL database and then put
into Ferret.

If I delete the ferret_ext.so library file and rebuild the index using
the pure Ruby indexer everything works perfectly so I am certain this is
an issue with the C indexer.

I have tried the gem file and compiling from source from svn (rev 325)
and both produce the same error.
Does anyone have any ideas?

Regards,


David
E9c9fa832d241e26d08f67f41f912939?d=identicon&s=25 David Harrison (Guest)
on 2006-04-22 04:13
After a bit of experimenting and reflection I have found that when using
the C indexer the function Field.data returns the value of the indexed
field.
Unfortunately using the pure Ruby indexer Field.data is not a function
(its equivalent is Field.string_value).

This is not too much of an issue though as I can do some presentation
level reflection to call the correct function.

There's probably a better workaround than this but at least things are
now working nice and quickly with the C indexer and fastcgi.

Regards,


David
B5e329ffa0cc78efbfc7ae2d084c149f?d=identicon&s=25 David Balmain (Guest)
on 2006-04-25 15:33
(Received via mailing list)
Hi David,

Please use Field#data from now on. data is actually an attribute of
Field in the pure Ruby version so I'm not sure why it wasn't working
for you. ie, you shouldn't need to do any reflection to access
Field#data. Eventually I'll probably remove the string_value and
binary_value methods but they'll stay for the moment. Sorry for the
confusion.

Cheers,
Dave
This topic is locked and can not be replied to.