Как создать функциональность для поиска в Google, используя zend_search_lucene?

Я использую zend_search_lucene для поиска ключевого слова в документах. В одном из документов есть фраза This taught me a valuable lesson in time management as I still had to attend lectures and tutorials during the day. I enjoyed improving my telephone manner and learning to deal with different reactions to my requests for donations.

Теперь, если искать "ценный урок по управлению временем", это ничего не даст. Я использую приведенный ниже код для поиска.

Zend_Search_Lucene_Analysis_Analyzer::setDefault(new Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive());

$index = new Zend_Search_Lucene('/home/project/mgh/data/search_file/lucene.customer.index');

 Zend_Search_Lucene::getDefaultSearchField('contents');

    $results = $index->find('contents:"valuable lesson on cost management" ');

    $this->count=count($results);

здесь, в приведенном выше примере, только несоответствие, вместо "в" есть "вкл", но остальные слова совпадают. Как получить счетчик результатов, если несколько слов совпадают (даже если несколько слов не совпадают)?

Спасибо за предложения.

Ссылка: http://framework.zend.com/manual/en/zend.search.lucene.query-language.html

2 ответа

Решение

Ключом здесь могут быть стоп-слова. Если вы указали "in" и "on" в качестве стоп-слов (слова, которые Lucene будет игнорировать, потому что они слишком распространены), тогда ваш запрос "ценный урок по управлению временем" будет соответствовать разделу "ценный урок по управлению временем" в тексте документа,

Проблема не в zend_search_lucene, а в том, как Lucene индексирует ваши данные. Я рекомендую вам прочитать Анализаторы, Токенизаторы и Фильтры токенов в документации Solr, чтобы понять, как это работает. Также было бы полезно, если бы вы опубликовали информацию о schema.xml (где вы определяете, какая информация должна быть проиндексирована и каким образом).

Другие вопросы по тегам