Zend_Search_Lucence - поиск с подстановочными знаками поддерживается только для слов, не состоящих из нескольких слов? - PullRequest
1 голос
/ 08 ноября 2011

Я пытаюсь реализовать Zend_Search_Lucene. Я реализовал это со следующим условием:

  1. ** Поиск слова 1005 *
  2. 1007 * Поиск слова *
  3. без учета регистра

Но иногда я получаю сообщение об ошибке "Wildcard search is supported only for non-multiple word terms"

Ниже приведен фрагмент кода для поиска, который я взял из контроллера.

...
$browseSrArray = array();
if ($postData['name'])
    $browseSrArray['name'] = preg_replace('#[^\w()/.%\-&]#', "", $postData['name']);

$results = $manufacturers->browseSearch($browseSrArray);    
if(count($results)>0){
    foreach ($results as $result) {
        $doc = new Zend_Search_Lucene_Document();

        // add Fields
        $doc->addField(Zend_Search_Lucene_Field::Keyword('AccountNumber', $result['accountid']));
        $doc->addField(Zend_Search_Lucene_Field::Keyword('ManufacturesName', strtolower($result['name'])));
        $doc->addField(Zend_Search_Lucene_Field::Text('ContactName', $result['contact_name']));
        $doc->addField(Zend_Search_Lucene_Field::Keyword('EmailId', strtolower($result['email'])));
        $doc->addField( Zend_Search_Lucene_Field::Text('ManufacturesId', $result['manufacturer_id']));
        $doc->addField(Zend_Search_Lucene_Field::Text('Manufacturesstatus', $result['status']));

        // Add document to the index
        $index->addDocument($doc);
    }

    // Optimize index.
    $index->optimize();

    if(strlen($postData['name']) > 2)
        $query = Zend_Search_Lucene_Search_QueryParser::parse(strtolower($postData['name'].'*'));
    else
        $query = $postData['name'];

    // Search by query
    $this->view->hits = $index->find(strtolower($query));  
} else {
    $this->view->hits = 0;
}
...

Необходимо исправить следующее условие.

Например,

  1. Если у меня имя производителя как "testname-lastname", я получаю эту ошибку.
  2. Если у меня есть название производителя как "firstname lastname", я не получу точный LIKE результат от lucence при поиске фамилии.

Пожалуйста, помогите мне исправить это.

...