Toon posts:

MySQL Full-text Search vraagje

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik ben op het moment bezig een search enige te bouwen voor mijn website en ben alle mogelijkheden aan het overwegen, ik kan zelf bepalen welke MySQL versie ik ga installeren dus de Full-text functionaliteit van MySQL zelf is zeer interessant.

http://www.mysql.com/doc/en/Fulltext_Search.html

In de manual staat dat MySQL gaat zoeken met de verkregen woorden in "OR-mode". In het gedeelte van "The boolean full-text search capability supports the following operators" staan enkele operators die gebruikt kunnen worden i.c.m. MySQL 4.01.

Wat ik me nou afvraag hoe kun je nu bepalen of je bijvoorbeeld wilt dat er gezocht word in "AND-mode"

Met een dergelijke query:

code:
1
SELECT * FROM articles WHERE MATCH (title,body) AGAINST ('woord1 woord2 woord3');


Word er dus met "woord1 OR woord2 OR woord3", en ik zie geen AND operator. Mijn vraag is dus hoe kun je ervoor zorgen dat je kunt kiezen tussen AND of OR.

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Beter kijken: het staat op diezelfde pagina... ;)
The boolean full-text search capability supports the following operators:

+
A leading plus sign indicates that this word must be present in every row returned.
-
A leading minus sign indicates that this word must not be present in any row returned.
By default (when neither plus nor minus is specified) the word is optional, but the rows that contain it will be rated higher. This mimicks the behaviour of MATCH() ... AGAINST() without the IN BOOLEAN MODE modifier.
< >
These two operators are used to change a word's contribution to the relevance value that is assigned to a row. The < operator decreases the contribution and the > operator increases it. See the example below.
( )
Parentheses are used to group words into subexpressions.
~
A leading tilde acts as a negation operator, causing the word's contribution to the row relevance to be negative. It's useful for marking noise words. A row that contains such a word will be rated lower than others, but will not be excluded altogether, as it would be with the - operator.
*
An asterisk is the truncation operator. Unlike the other operators, it should be appended to the word, not prepended.
"
The phrase, that is enclosed in double quotes ", matches only rows that contain this phrase literally, as it was typed.
And here are some examples:

apple banana
find rows that contain at least one of these words.
+apple +juice
... both words.
+apple macintosh
... word ``apple'', but rank it higher if it also contain ``macintosh''.
+apple -macintosh
... word ``apple'' but not ``macintosh''.
+apple +(>pie <strudel)
... ``apple'' and ``pie'', or ``apple'' and ``strudel'' (in any order), but rank ``apple pie'' higher than ``apple strudel''.
apple*
... ``apple'', ``apples'', ``applesauce'', and ``applet''.
"some words"
... ``some words of wisdom'', but not ``some noise words''.

[ Voor 8% gewijzigd door RobIII op 06-05-2003 01:19 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Verwijderd

Topicstarter
Wat probeer je nou over te brengen want dat is me niet helemaal duidelijk. Je quote gewoon een stuk uit die manual wat ik al gelezen heb?

Probeer je dit te zeggen...

OR is gewoon zoeken op met de query: apple banana
AND is dus: +apple +banana

Zo ja, dan ga je er dus vanuit dat ik met php o.i.d de input van de gebruiker op woorden ga verdelen en vervolgens met een selectie box oid bepaal of die worden voorzien moeten worden van "+ teken" ervoor?

[ Voor 13% gewijzigd door Verwijderd op 06-05-2003 01:37 ]


  • Ericston
  • Registratie: Maart 2001
  • Laatst online: 05-08 18:36
Verwijderd schreef op 06 mei 2003 @ 01:34:
Wat probeer je nou over te brengen want dat is me niet helemaal duidelijk. Je quote gewoon een stuk uit die manual wat ik al gelezen heb?
Dat je dit al eens hebt gelezen wil nog niet zeggen dat RobIII het fout heeft, ook al is hij een beetje cryptisch.
[...]
OR is gewoon zoeken op met de query: apple banana
AND is dus: +apple +banana
Jep, dat klopt (is eigenlijk vrij makkelijk uit de documentatie te destilleren en kan je ook uitproberen lijkt me).
Zo ja, dan ga je er dus vanuit dat ik met php o.i.d de input van de gebruiker op woorden ga verdelen en vervolgens met een selectie box oid bepaal of die worden voorzien moeten worden van "+ teken" ervoor?
Als je nu weet wat er moet gebeuren, dan is de implementatie toch triviaal? Het lijkt mij in ieder geval voor de hand liggend om de gebruiker zelf die plusjes te laten zetten, zoals Google sinds jaar en dag doet. Als jij denkt dat het beter werkt met selectie boxjes dan is dat jouw keuze. Niemand verwacht iets van je, want je wil het zelf doen, toch? ;)