2016-03-22 88 views
4

我有一個具有一些屬性的實體,我想索引其中的一些全文。在多個領域的學說全文

* @Index(name="search", columns={"description", "short_description", "name"}, flags={"fulltext"})}) 

現在如果我執行使用MATCH(description, short_description) AGAINST (...)查詢我得到:

找不到FULLTEXT指數相匹配的列列表

如果我索引全文只有一列:

* @Index(columns={"description"}, flags={"fulltext"})}) 

然後嘗試使用MATCH(description)AGAINST( ...)一切正常。
那麼如何索引多列?

謝謝。

回答

1

我找到了我的問題的解決方案,所以我發佈它的人會有同樣的問題。
I指數三列做:

* @Index(name="search", columns={"description", "short_description", "name"}, flags={"fulltext"})}) 

所以我要利用這一切在我的查詢:

MATCH(description, short_description, name) AGAINST (...) 

我不僅可以搭配一些指數。
希望得到這個幫助。

0

您應該可以在索引屬性中插入多個索引。

/** 
* @Entity 
* @Table(name="table",indexes={@index(name="foo_index", columns={"foo"}),@index(name="bar_index", columns={"bar"})}) 
*/ 

注意Doctrine2 ORM不支持MATCH AGAINST和全文搜索性能變得非常糟糕,如果甚至有可能在某些情況下。

當有許多請求和性能很重要時,您應該查看基於Lucene的搜索服務器,例如Elasticsearch或Apache Solr。

+0

以這種方式,我不能這樣做:MATCH(foo,bar)AGAINST(...)如我所問。我只能做MATCH(foo)反對(...),比賽(酒吧)反對(...) – Mattia