проблемы, возникающие при использовании фразы с запросом в LUCENE - PullRequest
0 голосов
/ 28 ноября 2011

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

У меня есть строка "abc Institute of Technology", и я проиндексировал различные комбинацииэтой строки (больше похожей на гальку) вот так

Document doc = new Document();
ArrayList<String> sh = new ArrayList<String>(); 
     sh.add("abc institute engineering technology");
     sh.add("abc institute engineering");
     sh.add("abc institute");
     sh.add("abc");
     sh.add("institute engineering technology");
     sh.add("institute engineering");
     sh.add("institute");
     sh.add("engineering technology");
     sh.add("engineering");
     sh.add("technology");
  for(String s : sh){
        doc.add(new Field("insti_shingles", s.toLowerCase(), Field.Store.YES,  Field.Index.ANALYZED, Field.TermVector.WITH_POSITIONS_OFFSETS));
  }
  writer.addDocument(doc);

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

engineering technology
abc
institute
abc institute engineering technology
technology
abc institute
abc institute engineering
institute engineering technology
engineering
institute engineering

Теперь, когда япоиск по термину "abc institute technology"

IndexSearcher searcher = new IndexSearcher(dir);
BooleanQuery booleanQuery = new BooleanQuery();
PhraseQuery query = new PhraseQuery();
query.add(new Term("insti_shingles", "abc institute technology"));
query.setSlop(4);
booleanQuery.add(query, BooleanClause.Occur.SHOULD);
TopDocs hits = searcher.search(booleanQuery, 30);

Теперь, согласно документации запроса фразы с slop, я должен получить некоторые результаты, но я получаю пустой набор результатов.Но я получаю результат, когда я ищу термин, который точно соответствует индексируемому токену.

Я думаю, что термин «технология abc institute» должен совпадать с токеном «технология разработки abc institute», когда мы используем фразу-запрос???

Я делаю что-то не так?Помощь

1 Ответ

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

Вам не нужен специальный токенизатор, чтобы использовать фразы-запросы со слопом - действительно, как вы заметили, это приведет к сбою этих запросов.

Просто токенизируйте, используя StandardAnalyzer, не нужно делать эту пользовательскую штуковину.

...