I am looking for a search box to put on my drupal site which will search for names of node type X, as well as a for a few of the fields in that content type. The default one only searches for node type title.
Which module would accomplish this best for me? There are a few modules on the modules page (Search API, Apache Solr Search Integration etc) and I can't figure out which will be the simplest and the most effective.

Comments

Unless you can setup your own

Unless you can setup your own solr server, I would recommend using the following combo

http://drupal.org/project/search_api
http://drupal.org/project/search_api_page
http://drupal.org/project/fuzzysearch

It will allow use to create an index with the one content type you wish and add any custom fields.

Thanks, I'll look into that

Thanks, I'll look into that and let you know how it worked out.

The combination you gave me

The combination you gave me includes fuzzy search, which only has a dev version for drupal 7, and search_api_page which only has a beta version. Have you tried this combination on Drupal 7 yourself? Is there a better combination for drupal 7?

I currently have this combo

I currently have this combo running on over 30 sites (both live and dev) and they work just fine. If the "dev" version of fuzzy search scares you, then try http://drupal.org/project/search_api_db to replace the fuzzy search index. It only does exact matching (similar to core search) but at least it is "stable". While there are d.o guidelines on what is considered stable, it is really the maintainers discretion what they consider stable. One man's dev might be another man's 1.0. :)

Ok, I downloaded and

Ok, I downloaded and installed the three modules you reccomended (including the fuzzy search), but what do I do now? I found the node index section (in the Search API section), enabled the server to run on the Fuzzy search server, chose a few more fields that I would like to index and saved. What's it supposed to do now, run out of the same search box which comes with drupal? I tried searching on a ISBN field in one of my nodes and nothing came up...

The Search API module has a

The Search API module has a ton of options, so it can be a bit daunting at first.

First thing to note, is that the search api module has absolutely nothing to do with core's search module. If you aren't using it for anything else, you can even go ahead and disable/uninstall it.

I have put together a quick feature that builds up an index, server and search page. You can use it to see how it is done.

Download it from http://drupal.org/sandbox/nicoz/1890656

Once you have installed it follow these instructions:

1. Go to admin/config/search/search_api/index/better_search_index/workflow and checkoff "Bundle filter" and scroll down and choose which content types you want to include/exclude

2. Go to admin/config/search/search_api/index/better_search_index/fields and add your custom fields

3. Go to admin/config/search/search_api/index/better_search_index/status and hit "index content" (you may have to do this a few times as it only does 50 at a time).

4. Go to admin/structure/block and place the "Search block: Better Search Page" in a region of your choosing.

Voila. You can now search from that block or going to www.yoursite/better-search

Ok, I have followed the

Ok, I have followed the instructions you said. First of all, out of curiosity, how is your 'better search page' better than the first search modules I installed?
Second (and more importantly) - I see now that I can do searches on partial words, and thats great. But, the search is working a little weird for me, and I hope I can just fix it with settings. Here are two product nodes which I am doing an index on:
I indexed title, author and ISBN, NOT pages:

Book 1 fields-> ISBN=1111, pages=123
Book 2 fields-> ISBN=123456789, pages=145

Search: 123 -> finds book 1 and displays excerpt from node containing '123'
Search: 1234 -> finds book 1 but doesn't display excerpt
Search: 12345 (until 12345678)-> finds book 1 and 2 but doesn't display either excerpt
Search:123456789 -> finds book 2 and displays excerpt

I don't want the search to work like this. Its picking up pages even though I don't want it to, and I would like it to always display the excerpt. Can this be done with better_search?

First of all, out of

First of all, out of curiosity, how is your 'better search page' better than the first search modules I installed?

it's not. It was put together to show you how it all works. Use your own if you don't like it.

That's the point of fuzzy search is that it allows for broader keyword matches including partial or misspelled keywords.

If you want exact matching, then use the Search API db module http://drupal.org/project/search_api_db

You can also play with the fuzzy search settings until you get what you need. See the README file.

--Search Settings--

You can choose the ngram length. This is the size of the chunks words are
broken into on indexing and searching. The default value is 3. The lower the
value, the more results (and more noise) you will get. Also, a lower value will
increase the size of the database tables.

--Assume missing letters in search terms:
A search term as entered by a user may be missing letters. If you want to search
for longer words than the user has entered, you can increase this number. In
English for example, you will need at least 1 if you want to return a plural
search term ending with "s" from a singular word. 0 means the term will not
return longer words in the results. 1 means a 4 letter search term will also
check 5 letters words in the index.

--Assume extra letters in search terms:
A search term as entered by a user may have extra letters. If you want to search
for shorter words than the user has entered, you can increase this number. In
English for example, you will need at least 1 if you want to return a singular
word from a plural search term ending with "s". 0 means the term will not
return shorter words in the results. 1 means a 5 letter search term will also
check 4 letters words in the index.

--Minimum completeness:
When indexed, each ngram is saved with the percentage of the word it belongs to.
"app" is 33.33% of "apple" because it is one ngram out of three (app, ppl, ple).
When searching, Fuzzy search lets you specify a minimum sum of percentages of
the ngrams it finds in each node. A lower number lets in more noise. Enter a
value between 0 and 100 to set the completeness required in the returned results.

It is best to set this value 10 points below your ideal minimum percentage. So
if you wanted to match results with at least 50% of the word matching, set this
value to 40.  The match is calculated per indexed word and not by the search
phrase, ensuring that matches are relevant to the words in the phrase and not
just all the letter combinations in the phrase.

Also note that when a phrase matches more than a single word the completeness
can be higher than 100%, this is because the completeness of each word is summed
and then sorted as a measure of accuracy in the result set.

--Sort by score
If selected, the results will be sorted by score first and completeness second,
which can make tag scores even more important. The default is to sort by
completeness first. You may want to try this if you find high scoring nodes
being pushed down in the results below lower scoring nodes with higher
completeness.

--Excerpt settings--

--Display scoring
Checking the "Display scoring" checkbox is helpful for debugging when you are
trying to fine tune score modifiers.  It will output completeness and score
values under each of the returned results. It will also show you the regex used
for fuzzy highlighting.

--Result excerpt length:
Set the length of the displayed text excerpt surrounding a found search term.
Applies per found term.

--Maximum result length:
Set the maximum length of the displayed result. Set to 0 for unlimited length.
Applies per result.

--Minimum spelling score:
Fuzzysearch tries to highlight search terms that may be misspelled. You can set
the minimum threshold, which is calculated as a ratio of ngram hits to misses in
a term. 0 may cause a misspelling to highlight everything, and 100 will only
highlight exact terms. Enter a value between 0 and 100.

This works by replacing bad ngrams (misspelled, missing letters, extra letters)
with a wildcard. It is possible to get false matches. For example, searching for
"rendition" will also highlight "condition" if your spelling score is low
enough. However, these kinds of matches are likely to have lower score
completeness and be sorted to the bottom of your results if your search term
exists in your content.

Finally, if this is too much for you, just create a view with some exposed filters. One for ISBN and on with your body field.

I see, thank you. I will play

I see, thank you. I will play around with the settings and also with the views integration.

But one more question: I see from the documentation how one sets the sensitivity of the search. I also see that you can set the minimum and maximum for the excerpt length. But why in some of my searches did it find the node (and provide a link to it) but not display an excerpt at all? Also, I still am not sure why the search picked up '123' which was the field 'pages' even though that field wasn't indexed.

But why in some of my

But why in some of my searches did it find the node (and provide a link to it) but not display an excerpt at all?

Not sure. Fuzzy search is finicky and can take some tinkering to get it right. I don't know the ins and outs of your site to be much more of a help on this.

nobody click here