mi znalezienie tego dość trudno wytłumaczyć tak proszę gołego ze mną tutaj ...Jak sprawdzić przeciwko wszystkim łączy przy generowaniu wynik MySQL
używam MySQL do wygenerowania wynik dla każdego wyniku zwróconego przez zapytanie. Wyniki są następnie uporządkowane według wyniku.
Część, która wydaje się nie działać prawidłowo, to próba dodania oceny dla każdego znacznika, który został przeszukany, a wynik jest przypisany. Powiedzmy więc, że szukam tagów "przykład", "test i" tag "i jeden z moich wyników jest przypisany do tagów" przykład "," test "," someothertag "powinien wyprowadzić wynik 10 ponieważ istnieją 2 meczów.
Co się rzeczywiście dzieje się dostaję 5 punktów, jeśli jest mecz, niezależnie od tego, ile znaczniki są dopasowane. i 0 jeśli żadne znaczniki są dopasowane.
Tutaj jest przykładem jednej z zapytaniami, które są wytwarzane z wyszukiwania.
SELECT DISTINCT results.*,
(
5*(MATCH(tags.name) AGAINST('"self employed"' IN BOOLEAN MODE)) +
5*(MATCH(tags.name) AGAINST('"rental income"' IN BOOLEAN MODE)) +
5*(MATCH(tags.name) AGAINST('"commission income"' IN BOOLEAN MODE)) +
5*(MATCH(tags.name) AGAINST('"bankruptcy"' IN BOOLEAN MODE)) +
5*(MATCH(tags.name) AGAINST('"condo approval"' IN BOOLEAN MODE)) +
1*usefulness +
10*shares
) AS score
FROM results
INNER JOIN categories c on results.ID = c.RESULT_ID
INNER JOIN tags ON results.id = tags.result_id
WHERE c.name in ('purchase', 'condo', 'va')
AND (tags.name = 'self employed' OR tags.name = 'rental income' OR tags.name = 'commission income' OR tags.name = 'bankruptcy' OR tags.name = 'condo approval' )
AND (results.scope = 'all' OR results.scope = 'hi')
AND published = 1
GROUP BY results.ID
having count(distinct c.c_id) = 3
ORDER BY score DESC
LIMIT 8 OFFSET 0
Prawdopodobnie nie trzeba używać pełnotekstowego indeksu, aby sprawdzić nazwy znaczników w tym zapytaniu. Szybsze i bardziej zwięzłe byłoby po prostu bezpośrednie porównanie równości. –
Prawdopodobnie będzie bardziej zrozumiałe dla ludzi, jeśli możesz zapisać schemat i niektóre przykładowe dane dla swoich tabel oraz listę tego, co chciałbyś, aby zapytanie wygenerowało dla tych przykładowych danych. – Mikeb
Groupin może spowodować przegrywanie meczów. Czy próbowałeś dodać COUNT do pięciu 5 * (MATCH (tags.name) ... przedmiotów? – nicolas