Я также получил эту ошибку с mod-mona apache. Похоже, что страница документации для webservice еще не реализована в Linux. Но webservice работает, несмотря на эту ошибку. Вы должны увидеть это, добавив ?WSDL
в конец URL-адреса, т. Е. http: //localhost/WebService1.asmx? WSDL
SELECT * from vocabulary
WHERE translation like 'word'
union all
SELECT * from vocabulary
WHERE translation LIKE '%word%' and translation not like 'word'
сначала отобразит точные совпадения
LIKE - это не полнотекстовый поиск . В полнотекстовом поиске MATCH(...) AGAINST(...)
возвращает оценку соответствия, которая может быть приблизительно аппроксимирована как релевантность.
Я смотрел на ту же проблему и пока не нашел идеального ответа для моей ситуации, но это может быть полезно для вас. Я довольно новичок в полнотекстовом поиске, поэтому любые эксперты тоже мне помогут.
Я делаю два выражения MATCH () ПРОТИВ () в выборке и объединяю оценки каждого из них, чтобы сформировать общую релевантность. Назначение различных множителей позволяет мне настраивать важность каждого набора результатов.
Мой первый MATCH () проверял бы по буквальному (или точному) поисковому запросу, используя двойные кавычки. Мой второй MATCH проверял бы нормально. Я применяю более высокий множитель к первому совпадению, поэтому он должен иметь более высокое значение релевантности, если он найден.
Примерно так.
SELECT *, ((MATCH(indexes) AGAINST ('"search_terms"' IN BOOLEAN MODE) * 10)
+ (MATCH(indexes) AGAINST ('search_terms' IN BOOLEAN MODE) * 1.5)) AS relevance
FROM ...
WHERE ...
AND (MATCH (indexes) AGAINST ('"search_terms"' IN BOOLEAN MODE) > 0
OR MATCH (indexes) AGAINST ('search_terms' IN BOOLEAN MODE) > 0)
...
ORDER BY relevance DESC
Если вы запустите функцию EXPLAIN, чтобы показать, как работает запрос, вы обнаружите, что дополнительные предложения MATCH () AGAINST () фактически не добавляют никаких накладных расходов к запросу из-за того, как работает MySQL.
Вы можете получить хороший поиск по релевантности, создав полнотекстовый индекс, а затем сопоставив его с вашим поисковым запросом.
Так что что-то вроде этого должно работать.
ALTER TABLE `vocabulary` ADD FULLTEXT INDEX `SEARCH`(`translation`);
SELECT *, MATCH(translation) AGAINST ('+word' IN BOOLEAN MODE) AS relevance
FROM `vocabulary`
WHERE MATCH(translation) AGAINST ('+word' IN BOOLEAN MODE)
ORDER BY relevance DESC
Более подробную информацию можно найти найдено в Справочном руководстве MySQL .
ALTER TABLE `vocabulary` ADD FULLTEXT INDEX `SEARCH`(`translation`);
SELECT *, MATCH(translation) AGAINST ('+word' IN BOOLEAN MODE) AS relevance
FROM `vocabulary`
WHERE MATCH(translation) AGAINST ('+word' IN BOOLEAN MODE)
ORDER BY relevance DESC
Дополнительную информацию можно найти в Справочном руководстве MySQL .
ALTER TABLE `vocabulary` ADD FULLTEXT INDEX `SEARCH`(`translation`);
SELECT *, MATCH(translation) AGAINST ('+word' IN BOOLEAN MODE) AS relevance
FROM `vocabulary`
WHERE MATCH(translation) AGAINST ('+word' IN BOOLEAN MODE)
ORDER BY relevance DESC
Дополнительную информацию можно найти в Справочном руководстве MySQL .