Javascript-форум (https://javascript.ru/forum/)
-   Серверные языки и технологии (https://javascript.ru/forum/server/)
-   -   Поиск из файла (https://javascript.ru/forum/server/70853-poisk-iz-fajjla.html)

Sonya 07.10.2017 13:04

Поиск из файла
 
Здравствуйте! Опять проблемы с поиском. С поиском заданных слов в файле разобралась в разных вариациях. Но никак не могу сообразить как сделать наоборот:
Есть текстовый файл в нем строки-словосочетания, есть заданное предложение, как сделать поиск совпадений не в файле, а из файла, именно в таком порядке, связанно это с тем, что заданное предложение может быть длинным, а словосочетания на порядок короче, поэтому вариант поиска предложения в файле не подходит. А поиск в предложении на наличие словосочетаний, то что нужно.
Как перебрать массив строк файла на предмет совпадения вхождений в предложении?

laimas 07.10.2017 13:31

Sonya,
есть готовые решения для этого, ищите в сети, подключайте и используйте. А вообще, что вы уперлись в файлы, есть БД, а в них есть полнотекстовый поиск, логику которого можно задавать.

Sonya 07.10.2017 13:40

С БД только начала разбираться. А готовых решений не нашла, поэтому и написала на форуме.

laimas 07.10.2017 15:55

Значит не можете конкретизировать свой поисковый запрос.

Если:

предложение - "А Б вгде Ж З"
словосочетания - "А Б", "Ж З"

то обходом в цикле массива словосочетаний ищем их в предложении.

Если:

предложение - "А Ж вгде З Б"
словосочетания - "А Б", "Ж З"

и тоже нужно найти, то тоже самое, но с добавлением логики поиска И/ИЛИ

Видимо у вас структуры управляющие/хранимые не очень удачно построены, что требуются такие затратные операции.

Sonya 08.10.2017 09:10

Никак не получается

laimas 08.10.2017 10:24

Покажите пример того что искать и в чем искать.

Sonya 08.10.2017 11:13

$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. Содержание текстового файла:
поиск слов
поиск предложений
поиск слова
поисковик
поиск словечек
поиск словосочетаний
поиски словечек

Естественно, все находит, но никак не могу сделать, чтобы процесс был обратным, чтобы из файла искал при том, чтобы выводил и номера строк совпадений.

laimas 08.10.2017 11:24

Цитата:

Сообщение от Sonya
не могу сделать, чтобы процесс был обратным

Что это значит?

Если поиск, это есть точное сопоставление строк $search и $line_value, то не strpos($line_value, $search), а array_keys() с параметром поиска, цикл при этом не нужен.

Sonya 08.10.2017 11:38

Цитата:

Сообщение от laimas (Сообщение 466876)
Что это значит?

Поиск из файла text.txt в строке $search, т.к. её содержание может быть таким: "Осуществить поиск слов в тексте".

Sonya 08.10.2017 11:46

Цитата:

Сообщение от laimas (Сообщение 466876)
Если поиск, это есть точное сопоставление строк $search и $line_value, то не strpos($line_value, $search), а array_keys() с параметром поиска, цикл при этом не нужен.

Пробовала, но это мне больше подошло, а что с этим могут быть проблемы?


Часовой пояс GMT +3, время: 19:24.