OK, więc próbuję przeprowadzić wyszukiwanie pełnotekstowe w wielu kolumnach, coś prostego:
SELECT * FROM pages WHERE MATCH(head, body) AGAINST('some words' IN BOOLEAN MODE)
Teraz chcę uporządkować według trafności (ile słów zostało znalezionych?), Co udało mi się zrobić z czymś takim:
SELECT * , MATCH (head, body) AGAINST ('some words' IN BOOLEAN MODE) AS relevance
FROM pages
WHERE MATCH (head, body) AGAINST ('some words' IN BOOLEAN MODE)
ORDER BY relevance
Teraz nadchodzi część, w której się gubię, chcę nadać priorytet trafności w head
kolumnie.
Wydaje mi się, że mógłbym utworzyć dwie kolumny adekwatności, jedną dla head
i jedną dla body
, ale w tym momencie przeprowadziłbym nieco to samo wyszukiwanie w tabeli trzy razy, a dla tego, co wykonuję tę funkcję, wydajność jest ważna, ponieważ zapytanie zostanie połączone i dopasowane do innych tabel.
Zatem moje główne pytanie brzmi : czy istnieje szybszy sposób wyszukiwania trafności i nadawania priorytetów niektórym kolumnom? (A jako bonus, być może nawet licząc trafność, ile razy słowa występują w kolumnach?)
Wszelkie sugestie lub porady byłyby świetne.
Uwaga: uruchomię to na serwerze LAMP. (WAMP w testach lokalnych)