07.10.2017, 13:04
|
Профессор
|
|
Регистрация: 07.07.2016
Сообщений: 281
|
|
Поиск из файла
Здравствуйте! Опять проблемы с поиском. С поиском заданных слов в файле разобралась в разных вариациях. Но никак не могу сообразить как сделать наоборот:
Есть текстовый файл в нем строки-словосочетания, есть заданное предложение, как сделать поиск совпадений не в файле, а из файла, именно в таком порядке, связанно это с тем, что заданное предложение может быть длинным, а словосочетания на порядок короче, поэтому вариант поиска предложения в файле не подходит. А поиск в предложении на наличие словосочетаний, то что нужно.
Как перебрать массив строк файла на предмет совпадения вхождений в предложении?
|
|
07.10.2017, 13:31
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Sonya,
есть готовые решения для этого, ищите в сети, подключайте и используйте. А вообще, что вы уперлись в файлы, есть БД, а в них есть полнотекстовый поиск, логику которого можно задавать.
|
|
07.10.2017, 13:40
|
Профессор
|
|
Регистрация: 07.07.2016
Сообщений: 281
|
|
С БД только начала разбираться. А готовых решений не нашла, поэтому и написала на форуме.
|
|
07.10.2017, 15:55
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Значит не можете конкретизировать свой поисковый запрос.
Если:
предложение - "А Б вгде Ж З"
словосочетания - "А Б", "Ж З"
то обходом в цикле массива словосочетаний ищем их в предложении.
Если:
предложение - "А Ж вгде З Б"
словосочетания - "А Б", "Ж З"
и тоже нужно найти, то тоже самое, но с добавлением логики поиска И/ИЛИ
Видимо у вас структуры управляющие/хранимые не очень удачно построены, что требуются такие затратные операции.
|
|
08.10.2017, 09:10
|
Профессор
|
|
Регистрация: 07.07.2016
Сообщений: 281
|
|
Никак не получается
|
|
08.10.2017, 10:24
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Покажите пример того что искать и в чем искать.
|
|
08.10.2017, 11:13
|
Профессор
|
|
Регистрация: 07.07.2016
Сообщений: 281
|
|
$search = 'поиск слов';
$lines = file('text.txt');
foreach($lines as $num_line => $line_value)
{
if(strpos($line_value, $search) !== FALSE)
echo "$num_line $line_value<br>";
}
Так я ищу словосочетание в текстовом файле text.txt. Содержание текстового файла:
поиск слов
поиск предложений
поиск слова
поисковик
поиск словечек
поиск словосочетаний
поиски словечек
Естественно, все находит, но никак не могу сделать, чтобы процесс был обратным, чтобы из файла искал при том, чтобы выводил и номера строк совпадений.
|
|
08.10.2017, 11:24
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,990
|
|
Сообщение от Sonya
|
не могу сделать, чтобы процесс был обратным
|
Что это значит?
Если поиск, это есть точное сопоставление строк $search и $line_value, то не strpos($line_value, $search), а array_keys() с параметром поиска, цикл при этом не нужен.
|
|
08.10.2017, 11:38
|
Профессор
|
|
Регистрация: 07.07.2016
Сообщений: 281
|
|
Сообщение от laimas
|
Что это значит?
|
Поиск из файла text.txt в строке $search, т.к. её содержание может быть таким: "Осуществить поиск слов в тексте".
|
|
08.10.2017, 11:46
|
Профессор
|
|
Регистрация: 07.07.2016
Сообщений: 281
|
|
Сообщение от laimas
|
Если поиск, это есть точное сопоставление строк $search и $line_value, то не strpos($line_value, $search), а array_keys() с параметром поиска, цикл при этом не нужен.
|
Пробовала, но это мне больше подошло, а что с этим могут быть проблемы?
|
|
|
|