2010-08-12 41 views
1

我正在使用Zend搜索Lucene,如果用戶在搜索框中輸入了Vibrant Bouquet,結果中帶有單詞「Vibrant」或單詞「bouquet」(或明顯)返回。我想要的只是用兩個單詞返回這些結果。Lucene - 如何在查詢中創建多個單詞而不是在一起

很顯然,我可以通過在單詞之間鍵入AND來做到這一點,但據我所知,Lucene隱含地在每個單詞之間隱式地放置OR;是否有可能改變它,以便隱含地在每個單詞之間放置AND,以便搜索的默認行爲是查找所有單詞,而不僅僅是一個或多個單詞?

我可以用搜索詞替換字符串來替代空格,但這可能會導致停止用戶輸入更復雜的查詢時出現問題。

回答

3

我搜索谷歌爲您提供:

默認的布爾運算符可以分別設置或檢索與Zend_Search_Lucene_Search_QueryParser::setDefaultOperator($operator)Zend_Search_Lucene_Search_QueryParser::getDefaultOperator()方法。

這些方法使用Zend_Search_Lucene_Search_QueryParser::B_ANDZend_Search_Lucene_Search_QueryParser::B_OR常數進行操作。

http://framework.zend.com/manual/en/zend.search.lucene.query-language.html

+0

謝謝,我一直在尋找在查詢構造API頁面上。 – Gnuffo1 2010-08-12 14:22:48

1

我試試這個代碼,這不行:

Zend_Search_Lucene_Search_QueryParser::setDefaultOperator('AND'); 

但此代碼的工作:

Zend_Search_Lucene_Search_QueryParser::setDefaultOperator(Zend_Search_Lucene_Search_QueryParser::B_AND); 

和更大的靈活性:

$term='zand search'; 

Zend_Search_Lucene_Search_QueryParser::setDefaultOperator(Zend_Search_Lucene_Search_QueryParser::B_AND); 

$query = Zend_Search_Lucene_Search_QueryParser::parse($term."*",'UTF-8'); 


$results = $index->find($query); 

在結果,例如:

(一些世界)的zend搜索(一些世界)

Zend的搜索lucence

爲獲得更多的flexcibility使用查詢語言:

Query Language

相關問題