Как я могу сделать, чтобы MySQL Fulltext индексация игнорировала строки URL, особенно расширение - PullRequest
2 голосов
/ 20 сентября 2009

Я индексирую строки, содержащие URL-адреса в MySQL Fulltext ... но я не хочу, чтобы URL-адреса включались в результаты.

В качестве примера я ищу «PHP» или «HTML», и я получаю записи типа «Массажная компания Ангелов Ибицы», смотри funandfrolicks. php »... в лучшем случае гедонистическое отвлечение.

Я не вижу примеров добавления регулярных выражений в список стоп-слов.

Еще одна вещь, о которой я подумал (и потерпел неудачу), - это создание полнотекстового SQL и уменьшение значения вклада ... однако в следующем SQL значение релевантности не изменилось.

SELECT title, content,match(title,content) against('+PHP >".php"' IN BOOLEAN MODE)
FROM tb_feed 
WHERE match(title,content) against('PHP >".php"' IN BOOLEAN MODE) 
ORDER BY published DESC LIMIT 10;

Альтернативой является грязный оператор SQL с дополнительным условием ...

WHERE ... IF(content REGEXP '.php', content REGEXP '(^| )php', 1) ...

Мысли ... какое лучшее решение?

Ответы [ 2 ]

1 голос
/ 21 сентября 2009

Если числа результатов сносные, вы можете не отображать совпадения со словами, которые хотите игнорировать. Такие как .php или .html. Это очень быстро, но потребует больше памяти, чем нужно.

Другим решением является создание другого поля с ключевыми словами, по которым вы хотите выполнить поиск. В этом поле вы пропускаете URL и любые другие ключевые слова, которые вам не нужны. Это решение займет короткое время для записи, но займет дополнительное место на жестком диске.

Лучшее решение - создать еще одну таблицу с именем ключевого слова (или аналогичной). Когда пользователь отправляет поисковый запрос, в таблице ключевых слов выполняется поиск указанных ключевых слов. Таблица ключевых слов заполняется путем разделения входных данных при загрузке или извлечении контента.

Этот последний вариант имеет то преимущество, что он может быть быстрым, поскольку данные компактны, поскольку ключевые слова хранятся только один раз, а индекс указывает на основную запись контента. Он позволяет выполнять умные поиски, если вы этого хотите.

0 голосов
/ 20 сентября 2009

Если вы хотите, чтобы php / html не был частью URL, попробуйте просто

like "% php %"
like "% html %"

Таким образом, php / html должно быть словом в предложении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...