|
|
|
|
|
для: ДацкыйКот
(25.11.2008 в 11:29)
| | >мне нужно обеспечить 2 вида поиска:
>А) точный, тот который в кавычках. для такого буду использовать поле (2) при этом запрос не модифицирую.
>Б) морфологический, для такого буду модифицировать запрос - приводить слова в нормальный вид; искать будет в поле (3)
а нельзя привести запрос в кавычках к нормальной форме и искать по морфоиндексу?
поле 2 мне кажется лишним | |
|
|
|
|
|
|
|
для: mechanic
(25.11.2008 в 09:39)
| | ****и ничего страшного в удвоенном объеме данных, главное сделать нужные ключи****
с учетом того, что полей будет 3 и на поля 2, 3 могут быть отдельные индексы, которые наверно могут быть сопоставимы по размеру с самими данными.. то как бы блин морфологический полнотекст не потребовал увеличения дискового пространства в 5 раз ))) | |
|
|
|
|
|
|
|
для: mechanic
(25.11.2008 в 09:39)
| | хм.. а как тогда индекс делать?
поясню.. у меня тогда вырастает 3 поля:
1) оригинальное
2) модифицированное для полнотекста - без тегов и пр.
3) модифицированное для морфологического полнотекста - без тегов, все слова в нормальной форме
мне нужно обеспечить 2 вида поиска:
А) точный, тот который в кавычках. для такого буду использовать поле (2) при этом запрос не модифицирую.
Б) морфологический, для такого буду модифицировать запрос - приводить слова в нормальный вид; искать будет в поле (3)
в принципе по наличию кавычек в запросе я могу сделать ветвление - запускать либо (А) либо (Б). Тогда можно делать индексы раздельные на поля (2) и (3).
Либо можно создать общий индекс на поля (2,3) и тогда любой запрос будет обращен к одному индексу.. | |
|
|
|
|
|
|
|
для: ДацкыйКот
(25.11.2008 в 08:59)
| | первый вариант мне видится самым оптимальным
вообще если идет речь о поиске по всему сайту (в смысле о "форме поиска", а не об sql-запросе для поиска по таблице), то я бы сделал индексер и к нему поисковик
грабим страницу
приводим содержание к нормальной форме
записываем в базу
и ничего страшного в удвоенном объеме данных, главное сделать нужные ключи | |
|
|
|
|
|
|
| Планирую прикрутить к полнотекстовому поиску учет морфологии. И вот призадумался над реализацией..
1) Можно попробовать приводить к нормальной форме (т.е. в именительный падеж и т.п.) все слова (как в запросе, так и в данных). Но это естественно, потребует увеличить почти вдвое объем хранимых данных: будет хранится оригинальная версия и версия с преобразованными словами.
2) Можно попробовать стемминг (обрезание окончаний слов) и искать слова в обрезанном виде. Но опять же, обрежем слово "день" до "ден" - и все равно слово "дни" не найдем.
3) Можно извратиться и для каждого слова в запросе найти все формы, после чего запустить полнотекстовый поиск по всем этим формам. Но мне даже страшно представить какой там получится sql-запрос: если, допустим, исходный запрос из 3 слов, и каждое слово имеет штук по 10 форм минимум. Да и полнотекстовый поиск вроде имеет ограничение на длину запроса в 255 символов.
Какие еще соображения есть у вас?
Планирую использовать phpMorphy. Вроде несложная система с хорошей базой. Позволяет находить нормальную форму слова, псевдо-корень слова (отбрасывает окончания и суффиксы), и находит возможные формы слова. | |
|
|
|
|