Lucene: получение результатов одинаковой длины при запросе

#java #sql #eclipse #lucene

#java #sql #eclipse #lucene

Вопрос:

Итак, я перепробовал абсолютно все типы запросов в lucene, и ни один из них, похоже, не работал. То, что я пытаюсь сделать, просто: я хочу запросить индекс, но я хочу получить точно такие же совпадения. И когда я говорю то же самое, я имею в виду, что результаты должны иметь тот же текст (очевидно) И ту же длину, что обычно происходит при запросе базы данных. Так, например, когда я ищу Джоди Фостер, я получаю этот текст в качестве одного из результатов: Список наград и номинаций, полученных Джоди Фостер. Мне не нужны результаты, содержащие поисковый запрос, мне нужны результаты, которые точно соответствуют поисковому запросу.

Прежде всего, вот как я создаю индекс lucene:

 IndexWriterConfig luceneConfig = new IndexWriterConfig(new StandardAnalyzer());

Path path = Paths.get("C:/Users/i_l_g/Desktop/DBpedia/qls_labels");
Directory dir = FSDirectory.open(path);
IndexWriter writer = new IndexWriter(dir, luceneConfig);
while (rs.next()) {
        Document doc = new Document();

        doc.add(new Field("entity", rs.getString("entity"), TextField.TYPE_STORED));
        doc.add(new Field("label", rs.getString("label"), TextField.TYPE_STORED));
        writer.addDocument(doc);

        }
  

rs — это переменная типа результирующего набора, и я, очевидно, просто извлекаю данные из таблицы и индексирую их с помощью Lucene.

Затем я попытался запросить этот индекс, используя все типы запросов, но каждый раз получаю один и тот же набор результатов, как будто я даже не менял тип запроса. Моей последней попыткой было использование PhraseQuery:

 StandardAnalyzer analyzer = new StandardAnalyzer();

PhraseQuery.Builder builder = new PhraseQuery.Builder();
PhraseQuery q;
builder.add(new Term("label","jodie"));
builder.add(new Term("label","foster"));
builder.setSlop(0);
q=builder.build();
  

Это набор результатов, которые я получаю каждый раз, если это может помочь:

Найдено 5 обращений.
1. Джоди Фостер
2. Алисия Кристиан «Джоди» Фостер
3. Фильмография Джоди
Фостер4. Впечатлите Джоди Фостер
5. Список наград и номинаций, полученных Джоди Фостер

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

Комментарии:

1. От вашего индекса вы ожидаете единственного точного Jodie Foster или множественного возможного? Я имею в виду, если вы добавили много точных Jodie Foster , то вам нужны все или только top?

2. нет, я хочу их все, но я продолжаю получать очень длинные предложения…

3. @AliYahya В вашем примере вы хотите, чтобы в качестве результата было возвращено только число 1 «Джоди Фостер»? Я думаю, вам лучше уточнить вариант использования. Перечислите входной текст, текст поиска (я думаю, это только «Джоди Фостер») и ожидаемые результаты, чтобы помочь вам