сравнение индексов строки в Java - PullRequest
0 голосов
/ 03 ноября 2011

Я пытаюсь сравнить 2 индекса строки.В основном, если первый индекс строки не равен второму индексу, создайте новый метод searchIndex() в void main.

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

Если я ввел Japan в текстовое поле

Вывод:

Searching for 'Japan '
3
Files\whalehunt.txt
Files\japan.txt
Files\innovation.txt

Но если я ввел 2 слова:

Вывод:

Searching for 'Japan amazon '
5
Files\whalehunt.txt
Files\japan.txt
Files\peru.txt
Files\correspondent.txt
Files\innovation.txt

В случае двух слов пользователь не знает, какое слово для какого файла.Это все перепутано.То, что я пытаюсь сделать, это сравнить индексы строки запроса, чтобы соответствовать, если два слова одинаковы или нет.Если нет, следует добавить новый метод searchIndex() в void main и назначить ему второе слово.

Итак, вместо этого:

public static void main(String[] args) throws Exception {

        createIndex();

        searchIndex("Japan amazon ");

    }

Сделайте это:

 public static void main(String[] args) throws Exception {

            createIndex();

                searchIndex("Japan ");
                searchIndex("amazon");


        }

Я попробовал:

public static void searchIndex(String searchString) throws IOException, ParseException {

        for(int n=0;n<=1000;n++)
        {
            if (searchString.substring(0) != searchString.substring(1))
            {

                void main.searchIndex(searchString.); //**Error**
            }
        }

Любая помощь будет благодарна !!

С уважением.

Ответы [ 2 ]

1 голос
/ 03 ноября 2011

Ваш метод serachIndex () абсолютно неверен, ИМХО.Вы сравниваете индексы 0 и 1 строки 1000 раз.Почему вы не используете токенизатор или String.split () для создания отдельных слов из вашей строки?Примерно так:

public static void searchIndex(String searchString) throws IOException, ParseException {
    searchString = searchString.trim();
    if (searchString.length < 1)
        return;
    String[] words = searchString.split(" ");
    if (words.length > 1) {
        for (String word : words)
            searchIndex(word);
    } else {
          // Do normal stuff here
    }
}

Кстати, я предполагаю, что вам известны такие инструменты, как Apache Lucene и алгоритмы, такие как MapReduce .

0 голосов
/ 03 ноября 2011

Вы можете использовать итератор разрыва или использовать простой String Tokenizer

 public static void breakSentenceIntoWords(String source) {
         BreakIterator boundary = BreakIterator.getWordInstance();
         boundary.setText(source);
         int start = boundary.first();
         for (int end = boundary.next();
              end != BreakIterator.DONE;
              start = end, end = boundary.next()) {
              String newWordToSearch = source.substring(start+1,end);
              // perform search and other ops here
         }
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...