2012-02-21 80 views
-1

我有一個短語查詢問題。Solr - 僅匹配確切短語

查詢輸入:「許多成果」

我想有隻包含確切的短語匹配的文本:

  1. 「字字字許多結果字字字」

  2. 「逐字逐句許多成果詞」

但問題是:

  1. 「字字字許多結果字字字」

  2. 「逐字逐句許多成果詞」

  3. 「字很多結果字「 - 我不想在我的結果中有這個

模式:

<fieldType name="text" class="solr.TextField" termVectors="true" termPositions="true" termOffsets="true" autoGeneratePhraseQueries="true"> 
<analyzer type="index"> 
    <tokenizer class="solr.StandardTokenizerFactory" /> 
    <filter class="solr.TrimFilterFactory" /> 
    <filter class="solr.LowerCaseFilterFactory" /> 
    <filter class="solr.ReversedWildcardFilterFactory" /> 
</analyzer> 
<analyzer type="query"> 
    <tokenizer class="solr.StandardTokenizerFactory" /> 
    <filter class="solr.TrimFilterFactory" /> 
    <filter class="solr.LowerCaseFilterFactory" /> 
</analyzer> 

感謝您的幫助

+0

你能告訴我們您所使用的查詢解析器並粘貼調試輸出(debugQuery =真)查看查詢是如何解析? – jpountz 2012-02-21 23:45:06

+0

不停止單詞過濾器吧? – aitchnyu 2012-02-22 07:40:06

回答

2

如果您需要在相同的順序精確短語匹配,則需要通過查詢的詞組如「到很多結果「。
這將返回完全匹配和所有單詞在一起的結果。

如果查詢不是一個詞組查詢並且只需要所有詞出現,那麼搜索將在某些位置(取決於slop的定義)在文檔中查找單詞,並且默認的搜索運算符是OR。

如果使用dismax,由query slopqfMinimum match (mm)其控制,出現在文檔中所需的項數爲它返回的結果。

如果您使用standard request handler您需要檢查Query parser default operator

http://wiki.apache.org/solr/SchemaXml#Default_query_parser_operator