Как создать функциональность для поиска, как 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);

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

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

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


person Manojkumar    schedule 04.06.2012    source источник


Ответы (2)


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

person Mark Leighton Fisher    schedule 04.06.2012
comment
Спасибо за ваш отзыв. В приведенном выше случае это может быть из-за стоп-слов. Но я все еще хочу знать, как получить подсчет результатов, даже если несколько слов совпадают независимо от стоп-слов.... - person Manojkumar; 05.06.2012

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

person Sergi    schedule 04.06.2012
comment
Привет, я конвертирую все виды документов в текст и загружаю их в индекс Lucene. Данные не приходят из БД. Таким образом, здесь не используется файл YML. Не подскажете, как этого добиться... - person Manojkumar; 04.06.2012
comment
Взгляните на эту статью blog.stoeckl.de/post/ 5240774861/zend-search-lucene-vs-solr Это может вам помочь - person Sergi; 04.06.2012