У меня есть рабочий индекс, и все хорошо, но есть кое-что, что беспокоит меня.
Есть один запрос, который я ищу в одном и том же поле дважды с разными строками, и я бы хотел присвоить им разные user_weights.
У меня получилось, изменив индекс, дважды выбрав поле с разными именами.
Но это кажется мне немного неправильным.
Можно ли использовать одно и то же поле дважды с разными весами пользователя?
Я читал об усилении ключевых слов, но поскольку мои запросы в основном немного сложнее, чем одно ключевое слово, это будет немного грязно.
Пример запроса (я немного почищен, списки поисковых терминов сгенерированы):
SELECT titel, age_firstdate, age_priodatum, uniqueserial(partner) as sortid,
weight() as w, if (w > 200000, IF(w > 500000, 2, 1) ,0) as intitel, IF (w>5000, 1, 0) as ingroup,
sort_w + sort_intitel as score, 0 as geodist
FROM anzeigen
WHERE MATCH('(
(@titel_dup wachfrau) |
(@titel_mf (wachmann|wachfrau|wachleute)) |
(@titel (("Fachkraft Schutz Sicherheit"|[...]|"Wachleute"))) |
(@titel_low (("Security Detektiv"|[...]|"450 Security"))))
') AND geodist <= 30
ORDER BY geodist ASC, intitel DESC, ingroup DESC, score DESC
LIMIT 10000
OPTION max_matches=100000, field_weights = (titel_dup=500001, titel_mf=200001, titel=5001, titel_low = 100, beschreibung=5),
ranker=expr('sum(word_count*user_weight*lcs)')
определение индекса (очистить тоже):
sql_query = SELECT SQL_NO_CACHE \
s.id, s.titel, s.titel as titel_dup, s.titel as titel_mf, s.titel as titel_low,[...] \
FROM _sphinxSource s
sql_field_string = titel
sql_field_string = titel_dup
sql_field_string = titel_mf
sql_field_string = titel_low