Может ли полнотекстовый поиск MySQL возвращать индекс (позицию) вместо оценки? - PullRequest
4 голосов
/ 30 декабря 2010

Я хотел бы использовать позицию / индекс, найденные совпадением ... Против полнотекстового поиска в MySQL, чтобы вернуть некоторый текст до и после совпадения в поле. Это возможно? Во всех примерах, которые я видел, Match ... Against возвращает оценку в выборе вместо местоположения или позиции в текстовом поле, в котором выполняется поиск.

SELECT 
  random_field, 
  MATCH ($search_fields) 
    AGAINST ('".mysql_real_escape_string(trim($keywords))."' IN BOOLEAN MODE) 
      AS score
FROM indexed_sites 
WHERE 
  MATCH ($search_fields) 
    AGAINST ('".mysql_real_escape_string($keywords)."' IN BOOLEAN MODE) 
ORDER BY score DESC;   

Это даст мне поле и счет ... но я бы хотел индекс / позицию вместо (или вдоль) счета.

1 Ответ

1 голос
/ 04 января 2011

Полнотекстовый поиск является функцией оценки. это не поиск функции вхождения. Другими словами, наивысший результат может не иметь стартовой позиции для матча. Как это может быть сочетание взвешенных результатов различных совпадений в тексте. если вы включите расширение запроса, поиск слова / слов может даже не появиться в результате! http://dev.mysql.com/doc/refman/5.0/en/fulltext-query-expansion.html

Надеюсь, в этом есть какой-то смысл.

В любом случае, вам лучше всего взять результаты, а затем использовать некоторую функцию поиска текста, чтобы найти первое вхождение первого подходящего слова. Я предполагаю, что это лучше всего подходит для языка обработки текста, такого как perl, или более общего языка, такого как php, или любого языка, который вы используете для выполнения запроса.

DC

...