В версии 1.1.29 добавлен некий элемент релевантности. Например, есть такие топики (перечислены в порядке их создания):
1. В тексте встречается слово «мама».
2. В тексте встречается фраза «мама мыла раму».
3. В тексте есть слова «мама», «рама».
4. И в тексте, и в заголовке встречается фраза «мама мыла раму».
5. В тексте встречается слово «рама».
…
Задаем поиск «мама мыла рам*».
В результатах топики будут выданы в таком порядке: 4, 2, 1, 3, 5
Т.е. максимальный вес имеют топики, в которых искомая фраза целиком встречается и в заголовке, и в тексте (если это поиск в топиках), потом те, где фраза целиком встречается в тексте, потом те, где встречается хотя бы одно из слов искомой фразы.
UPD По заявкам пользователей в версии 1.1.31 добавлен поиск по блогам — в названиях и описаниях блогов
21 комментарий
А не 4, 2, 3, 1, 5?
4. И в тексте, и в заголовке встречается фраза «мама мыла раму».
2. В тексте встречается фраза «мама мыла раму».
3. В тексте есть слова «мама», «рама».
1. В тексте встречается слово «мама».
5. В тексте встречается слово «рама».
Да придумать не сложно, логика довольно простая. Но все это за счет утяжеления запроса, причем, чем больше слов в искомой фразе, тем кратно утяжеляется запрос. Поэтому все эти ограничения умышленно делаются.
Данное дополнение было введено исходя из такой простой логики: если юзер вводит три слова в фразе, то, скорее всего, он ищет именно фразу, а не просто слова.
ORDER BY
CASE WHEN (LOWER(t.topic_title) REGEXP '[[:<:]]предприятие[[:space:]]+для[[:>:]]') THEN 2 ELSE 0 END +
CASE WHEN (LOWER(tc.topic_text_source) REGEXP '[[:<:]]предприятие[[:space:]]+для[[:>:]]') THEN 1 ELSE 0 END DE t.topic_id ASC
LIMIT 0, 10
Строго следовал при установке поиска инструкции однако вот что выдало в итоге:
Notice: Use of undefined constant MYSEARCH_HOOK_ENABLE - assumed 'MYSEARCH_HOOK_ENABLE' in /home/www/lex.awardspace.us/classes/hooks/HookMysearch.class.php on line 18
Notice: Use of undefined constant MYSEARCH_HOOK_ENABLE - assumed 'MYSEARCH_HOOK_ENABLE' in /home/www/lex.awardspace.us/classes/hooks/HookMysearch.class.php on line 24
Это значит, что вовсе НЕ следовал строго. Не установлен файл config\modules\mysearch\config.php, либо там какой-то старый файл от старой версии. Указанная константа определяется именно в этом файле.
avadim автор этого модуля, и если он сказал, что это для 0.3 значит так оно и есть, но насколько мне известно он также собирается его перепиливать и для 0.4, так что ожидайте.
Спасиб за модуль, кажется, нашел глюк или недоработку.
Делаю поиск по сайту по слову «Lineage» — слово подсвечивается
Делаю поиск по сайту по слову «Lineage 2» — подсвечивается только слово «Lineage»
Ставлю в конфиге поиск «MYSEARCH_MIN_LENGTH, 1» — подсвечиваются оба слова «Lineage 2»
Т.е. поиск по фразе, одно из слов в которой меньше значения «MYSEARCH_MIN_LENGTH, 3» не будет подсвечиваться.
Поиск идет по всем словам, которые встречаюися в фразе, и есть минимальная длина слова, которая задается в конфиге. Все же поиск чисто средствами MySQL — недешевое удовольствие (с точки зрения ресурсов), поэтому все вряд ли стоит задавть длину слова меньше 3
21 комментарий
4. И в тексте, и в заголовке встречается фраза «мама мыла раму».
2. В тексте встречается фраза «мама мыла раму».
3. В тексте есть слова «мама», «рама».
1. В тексте встречается слово «мама».
5. В тексте встречается слово «рама».
Топики 1, 3, 5 для модуля равнозначны и там идет сортировка по порядку их создания.
Сиранно что дата оновления модуля стоит 3 августа, и пожалуйста добавте прямую ссылку
Данное дополнение было введено исходя из такой простой логики: если юзер вводит три слова в фразе, то, скорее всего, он ищет именно фразу, а не просто слова.
Ваш в код запроса:
можно немного оптимизировать:
есть правда две хотелки:
1. поиск только для зарегистрированных
2. не искать внутри тегов, если в топиках присутствуют теги
Делаю поиск по сайту по слову «Lineage» — слово подсвечивается
Делаю поиск по сайту по слову «Lineage 2» — подсвечивается только слово «Lineage»
Ставлю в конфиге поиск «MYSEARCH_MIN_LENGTH, 1» — подсвечиваются оба слова «Lineage 2»
Т.е. поиск по фразе, одно из слов в которой меньше значения «MYSEARCH_MIN_LENGTH, 3» не будет подсвечиваться.