Understanding Basic Search

Hello,

I am trying to understand how the basic search works.

I have an item, that has the following description:

"Requesting to make changes to a manuscript. Mentions articles about Edgar Allan Poe."

If I do a Basic Search I get the following results:

  • Poe (Keyword) - no result is returned
  • Edgar (Keyword) - result is returned
  • Allen (Keyword) - result is returned
  • Poe (Boolean) - no result is returned
  • Edgar (Boolean) - result is returned
  • Allen (Boolean) - result is returned
  • Edgar (Boolean) - result is returned
  • Poe - (Exact Match) - returns results, but includes all items like Poem

All in all, not very satisfactory.

Why would exact match return Poem? Why does a keyword search for Poe return no results?

Another example: I have identifiers like Whitman-100, Whitman-101, Whitman-135a, Whitman-135b etc.

  • Whitman-100 (Keyword) - returns all (!) of the items with Whitman in the identifier
  • Whitman-100 (Boolean) - returns all of the items with Whitman in the identifier
  • Whitman-100 (Exact Match) - returns only the correct record.

Again, not very satisfactory.

Is there a way to improve those results?

Exact match searches look for the exact string you gave, anywhere in the record, so since "poe" is inside "poem," that's a match.

Keyword and Boolean searches both use MySQL's built-in full-text search. That search is based on breaking up both the search string and the indexed text into individual words and matching up the words. The reason you're getting the results you are for "Whitman-100" is that MySQL sees the hyphen as a word boundary, so it's acting like you searched for "Whitman 100" and that same string was in the records.

As you noted, "exact match" searching will leave the hyphen intact.

The final wrinkle is one often noted here in the forums when the search comes up: MySQL by default doesn't index any words shorter than 4 letters long, which is why your "Poe" searches using the keyword and boolean options returned no results.

Omeka can control very little about how the MySQL fulltext search operates. Certain things like the minimum word length can be changed, but only by changing the MySQL server's system variables.

Thanks for shedding some light onto this matter!

I will look into the MySQL systems variables, and see if I can change those.

I suppose my understand of "exact" match is different, since to me Poe != Poem. I think I would expect the Keyword search to return Poem.