| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Общие вопросы > Поиск с ключевыми символами |
| Автор: DenWPF 17.5.2011, 14:27 | ||
| Я делаю поиск по музыке, музыка у меня приходит с двумя данными, название песни и исполнитель. Есть у меня класс, он сортирует запрос. Вот сейчас он работает так ; - разделитель запросов # - название песни ^ - Поиск в пределах определенного группы\артиста +\- песня только с ними \ песня только без них. т.е Запрос "пляж #пляж" - должен вывести ТОЛЬКО песни которые назваются со словом "пляж" и группа\исполнитель не называется "пляж" Вот хочется сделать более идельно. что бы работа +\- в # ^ и добавление [ ] - то что находиться между ними считается одним словом. т.е чтто бы работало "пляж +#пляж -^пляж [крутой отдых]" это обозначает. Искать только где в названии "пляж" группа не называется "пляж" и что бы была точная фраза крутой отдых. и к примеру если + перед # ^ отсутвует то считается что там стоит +. p.s забыл сказать, это надо всё сложить в массив _minus - все отрицательные и.т.д а все слова без ключевых знаков шли в _str т.е "пляж -#группа крутой" записывалось в _str "пляж крутой" p.s завтра сдавать курсач. если поможете спасибо.
|
| Автор: Stolzen 17.5.2011, 14:33 |
| Нужно данные из строки запроса распределить по подходящим массивам? |
| Автор: Stolzen 17.5.2011, 15:13 | ||||
Попробуйте использовать регулярные выражения:
|
| Автор: DenWPF 17.5.2011, 15:38 | ||||||
| это конечно хорошо, но опять же нету времени разбираться в этом, будет много глюков. к примеру вот сейчас вел ответ не очень адекватный.
p.s Хотя выбора то нет. я добавил новые массивы для сортировки.
_minus // глобальный минус _plus = // глобальный плюс _artistMinus // минус в артисте -#мореМИНУС _artistPlus // плюс в артисте #море, #мореПЛЮС _titleMinus // минус в названии -^пляжМИНУС _titlePlus // плюс в названии ^пляж, +^пляжПЛЮС |
| Автор: DenWPF 17.5.2011, 16:00 | ||
ПОМОГИТЕ
из строки "пляж ^пляж #море -^пляжМИНУС -#мореМИНУС +#мореПЛЮС +^пляжПЛЮС " остались не обработанные "^пляж #море -^пляжМИНУС +^пляжПЛЮС " помогите )) |
| Автор: Stolzen 17.5.2011, 16:30 | ||||||
Тут ^ экзанировать нужно - //^ вот так записать, т.к. просто шапочка обозначает начало строки Вот этот вообще лучше бы так переписать:
А вообще, вот вариант проще:
Разбить весь запрос на токены, а затем уже каждый рассматривать. Можно, например, каждый из них проверять на соответсвие регэкспу. Или сделать проще - если первый символ такой-то и следующий за ним такой-то, то делать одно, если другой - то другое. |
| Автор: DenWPF 17.5.2011, 17:46 |
| Спасибо, сделал по первому примеру, пока решил [] убрать есть много других забот. |