Я пытаюсь использовать https://github.com/nqxcode/laravel-lucene-search
Мой composer.json выглядит так:
"require": {
"php": ">=5.5.9",
"laravel/framework": "5.1.*",
"bestmomo/scafold": "dev-master",
"laravel/cashier": "~5.0",
"laravel/socialite": "*",
"nqxcode/laravel-lucene-search": "2.1.*"},
Обновление композитора работало просто отлично.
Затем я обновил свой config / app.php, добавив
'Search' => Nqxcode\LuceneSearch\Facade::class,
на псевдонимы массив и Nqxcode\LuceneSearch\ServiceProvider::class,
к массиву провайдеров.
Затем я получил и обновил config / laravel-lucene-search.php, как показано ниже:
<?php
return [
/*
|--------------------------------------------------------------------------
| The configurations of search index.
|--------------------------------------------------------------------------
|
| The "path" is the path to Lucene search index.
|
| The "models" is the list of the descriptions for models. Each description
| must contains class of model and fields available for search indexing.
|
| For example, model's description can be like this:
|
| namespace\ModelClass::class => [
| 'fields' => [
| 'name', 'description', // Fields for indexing.
| ]
| ]
|
*/
'index' => [
'path' => storage_path('app') . '/lucene-search/index',
'models' => [
App\Question::class => [
'fields' => [
'title', 'raw_body', // Fields for indexing.
]
],
],
],
/*
|--------------------------------------------------------------------------
| ZendSearch token filters.
|--------------------------------------------------------------------------
|
| The "filters" is the list of ZendSearch token filters classes. Each class
| must implement the TokenFilterInterface interface. Stemming token filter
| for english and russian words is enabled by default. To disable it remove
| class 'Nqxcode\Stemming\TokenFilterEnRu' from token filters.
|
| The "stopwords" is the list of paths to files with stopwords. By default
| english and russian stopwords are used.
|
*/
'analyzer' => [
'filters' => [
Nqxcode\Stemming\TokenFilterEnRu::class,
],
'stopwords' => Nqxcode\LuceneSearch\Analyzer\Stopwords\Files::get(),
],
];
Наконец, я обновил мою модель вопросов, как показано ниже:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
use Nqxcode\LuceneSearch\Model\Searchable;
class Question extends Model implements Searchable
{
/**
* Is the model available for searching?
*/
public function isSearchable()
{
return $this->publish;
}
/**
* The database table that the Model uses
* @var string
*/
protected $table = "questions";
/**
* The fields that are mass assignable
* @var array
*/
protected $fillable = ['title','body','images','quality_score','deactivated','creator_id','reviewer_id'];
/*
* We have a calculated field (body alternate) that we want to access
*/
protected $appends = ['simple_body','raw_body'];
public function getRawBodyAttribute(){
return $this->attributes['body'];
}
Я строю индекс из моего терминала, используя search:rebuild -v
и это успешно завершено.
Теперь я пытаюсь сделать простой тест, и он не проходит по этой строке в моем контроллере: $questions = Search::query('masses')->get();
Результаты, которые я получаю:
Кто-нибудь знает, что идет не так? Права доступа к каталогу должны быть в порядке. Я могу использовать файловую систему laravel. Например: Storage::disk('local')->put('file.txt', 'Contents');
@nqxcode
Изменить: я дал 777 разрешений на каталог хранения и по-прежнему та же ошибка.
Задача ещё не решена.
Других решений пока нет …