Поисковые проблемы - PullRequest
       8

Поисковые проблемы

0 голосов
/ 01 августа 2009

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

Мне нужно выяснить одну вещь:

Я строка в базе данных

Как мне сопоставить вход "AM", но сохранить тот же регистр? Есть PHP-функции, такие как str_ireplace или preg_replace / eregi_replace, но мне нужно разбить строку в соответствии с каждым точным совпадением (как отдельным словом, поэтому не соответствует "lAMb", только "am").

Так что я могу выделить совпадения. Также мне нужно выяснить, как динамически сокращать строку, но сохранять место совпадений посередине:

... это часть строки, где ...

и делайте это в соответствии с размером шрифта, установленным пользователем в любом браузере. У меня был один, который работал только в WebKit, но это не хорошо. Пожалуйста, ответьте что-нибудь вроде PHP или Python, я не хардкорный парень типа C.

1 Ответ

4 голосов
/ 01 августа 2009

Предлагаю вам прочитать это

http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html

Это может помочь вам создать лучшую поисковую систему и, возможно, ответить на часть вашего вопроса

Вот хороший пример того, что вы могли бы сделать:

mysql> SELECT id, body, MATCH (title,body) AGAINST
    -> ('Security implications of running MySQL as root'
    -> IN NATURAL LANGUAGE MODE) AS score
    -> FROM articles WHERE MATCH (title,body) AGAINST
    -> ('Security implications of running MySQL as root'
    -> IN NATURAL LANGUAGE MODE);
    +----+-------------------------------------+-----------------+
    | id | body                                | score           |
    +----+-------------------------------------+-----------------+
    |  4 | 1. Never run mysqld as root. 2. ... | 1.5219271183014 |
    |  6 | When configured properly, MySQL ... | 1.3114095926285 |
    +----+-------------------------------------+-----------------+
    2 rows in set (0.00 sec)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...