2015-09-28 91 views
2

爲搜索具有給定技能的文檔而形成的搜索查詢。ElasticSearch不返回帶有詞前綴或後綴爲詞的文檔或#


 GET resume_index/_search 
     { 
      "query": { 
       "bool" : { 
      "must" : [ { 
       "ids" : { 
       "types" : [], 
       "values" : [ "176", "177", "178", "179", "180", "181", "182", "183", "184", "185", "186", "187", "188", "189", "190", "191", "192", "193", "194", "195", "196", "197", "198", "199", "200", "201", "202", "203", "204", "205", "206", "207", "208", "209", "210", "211", "212", "213", "214", "215", "216", "217", "218", "219", "220", "221", "222", "223", "224", "225", "226", "227", "228" ] 
       } 
      }, { 
       "bool" : { 
       "should" : [ { 
        "match" : { 
        "skills" : { 
         "query" : "c#", 
         "type" : "phrase", 
         "analyzer" : "synonym" 


        } 
        } 
       }, { 
        "match" : { 
        "skills" : { 
         "query" : "asp.net", 
         "type" : "phrase", 
         "analyzer" : "synonym" 

        } 
        } 
       } ], 
       "minimum_should_match" : "1" 
       } 
      }, { 
       "match" : { 
       "skills" : { 
        "query" : "c#", 
        "type" : "phrase", 
        "analyzer" : "synonym" 


       } 
       } 
      } ] 
      } 
      } 
     } 

結果時,我與像Java其他技術人員更換C#即將到來。但是如果在搜索查詢中提到了c#或.net,那麼結果就是空白,即使這些技能已經被編入索引。


{ 
     "took": 11, 
     "timed_out": false, 
     "_shards": { 
      "total": 5, 
      "successful": 5, 
      "failed": 0 
     }, 
     "hits": { 
      "total": 3, 
      "max_score": 0.40027505, 
      "hits": [ 
      { 
       "_index": "resume_index", 
       "_type": "phrase", 
       "_id": "198", 
       "_score": 0.40027505, 
       "_source": { 
        "content": "", 
        "skills": [ 
         "10g", 
         "c++", 
         "crystal report", 
         "ms-access", 
         "real estate", 
         "ui", 
         ".net", 
         "ado", 
         "c#", 
         "database", 
         "java", 
         "mvc", 
         "oracle 10g", 
         "order management", 
         "software development life cycle", 
         "system development", 
         "technica", 
         "vb", 
         "web technologies", 
         "windows xp", 
         "wpf", 
         "c", 
         "client management", 
         "development and maintenance", 
         "development life cycle", 
         "html", 
         "jquery", 
         "mysql", 
         "oracle", 
         "r", 
         "software development", 
         "ssrs", 
         "testing", 
         "unit testing", 
         "wcf", 
         "web applications", 
         "asp.net", 
         "asp.net mvc", 
         "c programming", 
         "deployment", 
         "management", 
         "project", 
         "sales", 
         "windows", 
         "adobe photoshop", 
         "developing", 
         "java script", 
         "reports", 
         "script", 
         "silverlight", 
         "software development life cycle (sdlc)", 
         "sql", 
         "sql server" 
        ] 
       } 
      }, 
      { 
       "_index": "resume_index", 
       "_type": "phrase", 
       "_id": "199", 
       "_score": 0.3792688, 
       "_source": { 
        "content": "", 
        "skills": [ 
         "application maintenance", 
         "client-server", 
         "cms", 
         "design", 
         "dos", 
         "e-commerce", 
         "erp", 
         "features", 
         "finance", 
         "knockout.js", 
         "mongodb", 
         "post-implementation", 
         "stocks", 
         ".net", 
         "ado", 
         "application development", 
         "c#", 
         "debugging", 
         "documentation", 
         "insurance", 
         "integration", 
         "java", 
         "mvc", 
         "planning", 
         "software development life cycle", 
         "svn", 
         "technica", 
         "agile", 
         "android", 
         "architecture", 
         "automation testing", 
         "client management", 
         "coordination", 
         "development life cycle", 
         "functional specification", 
         "healthcare", 
         "html", 
         "iis", 
         "jquery", 
         "networking", 
         "requirement gathering", 
         "software development", 
         "testing", 
         "tfs", 
         "triaging", 
         "troubleshooting", 
         "visual source safe", 
         "wcf", 
         "xcode", 
         "xml", 
         "asp.net", 
         "channel", 
         "css", 
         "entity framework", 
         "implementation and testing", 
         "maintenance support", 
         "management", 
         "mobile application", 
         "oracle forms", 
         "project", 
         "sales", 
         "sdlc", 
         "technical support", 
         "windows", 
         "ajax", 
         "analytics", 
         "client interaction", 
         "code management tool", 
         "crm", 
         "customer", 
         "excellent communication", 
         "ipad", 
         "java script", 
         "linq", 
         "market", 
         "ms dos", 
         "reporting" 
        ] 
       } 
      }, 
      { 
       "_index": "resume_index", 
       "_type": "phrase", 
       "_id": "208", 
       "_score": 0.3556832, 
       "_source": { 
        "content": "", 
        "skills": [ 
         "c++", 
         "control system", 
         "design", 
         "features", 
         "real estate", 
         ".net", 
         "ado", 
         "c#", 
         "database", 
         "integration", 
         "java", 
         "mvc", 
         "rdlc", 
         "stored procedures", 
         "technica", 
         "test case", 
         "agile", 
         "architecture", 
         "automation testing", 
         "banking", 
         "c", 
         "debug", 
         "design patterns", 
         "excel", 
         "iis", 
         "jquery", 
         "object oriented programming", 
         "r", 
         "security", 
         "software development", 
         "t-sql", 
         "testing", 
         "unit testing", 
         "wcf", 
         "web applications", 
         "xml", 
         "asp.net", 
         "c programming", 
         "css", 
         "development methodologies", 
         "entity framework", 
         "management", 
         "project", 
         "rdlc reports", 
         "sales", 
         "triggers", 
         "windows", 
         "ajax", 
         "coding", 
         "customs", 
         "dbms", 
         "developing", 
         "java script", 
         "javascript", 
         "linq", 
         "reporting", 
         "reports", 
         "schemas", 
         "script", 
         "software engineering", 
         "sql", 
         "sql server", 
         "telerik", 
         "test case design", 
         "visual studio", 
         "web service", 
         "webform", 
         "webforms" 
        ] 
       } 
      } 
      ] 
     } 
    } 

內容部分我已經刪除,因爲允許的上限性格。 你可以看到c#在文檔中被索引,但仍然無法獲得結果。


Query Analysis Looks ok to me.  

{ 
     "valid": true, 
     "_shards": { 
      "total": 1, 
      "successful": 1, 
      "failed": 0 
     }, 
     "explanations": [ 
     { 
      "index": "resume_index", 
      "valid": true, 
      "explanation": "+ConstantScore(_uid:txt#176 _uid:txt#177 _uid:txt#178 _uid:txt#179 _uid:txt#180 _uid:txt#181 _uid:txt#182 _uid:txt#183 _uid:txt#184 _uid:txt#185 _uid:txt#186 _uid:txt#187 _uid:txt#188 _uid:txt#189 _uid:txt#190 _uid:txt#191 _uid:txt#192 _uid:txt#193 _uid:txt#194 _uid:txt#195 _uid:txt#196 _uid:txt#197 _uid:txt#198 _uid:txt#199 _uid:txt#200 _uid:txt#201 _uid:txt#202 _uid:txt#203 _uid:txt#204 _uid:txt#205 _uid:txt#206 _uid:txt#207 _uid:txt#208 _uid:txt#209 _uid:txt#210 _uid:txt#211 _uid:txt#212 _uid:txt#213 _uid:txt#214 _uid:txt#215 _uid:txt#216 _uid:txt#217 _uid:txt#218 _uid:txt#219 _uid:txt#220 _uid:txt#221 _uid:txt#222 _uid:txt#223 _uid:txt#224 _uid:txt#225 _uid:txt#226 _uid:txt#227 _uid:txt#228) +((skills:asp.net skills:c#)~1) +skills:c#" 
      } 
     ] 
    } 

我可以看到越來越形成正確的查詢。是的,我錯過了這是造成這個問題。我正在使用空格分詞器

回答

0

我可以看到查詢時間分析似乎能正常工作,但您如何在索引時分析?默認standard tokenizer上標記化和#.這將導致c#查詢不匹配,如下所示:

curl -XGET http://192.168.12.5:9200/tmdb/_analyze?analyzer=standard -d 'c#' 
{ 
    "tokens":[ 
     {"token":"c", 
      "start_offset":1, 
      "end_offset":2, 
      "type":"<ALPHANUM>", 
      "position":1 
}]} 

您可以切換到剛剛在標記化的空白simple analyzer。您還可以使用mapping char filter來映射諸如c# =>csharp之類的內容。

+0

嗨道格,你可以看到作爲c不是c#的響應中的令牌。我也嘗試過使用簡單的分析器。我們使用同義詞分析器和空白標記器。 「分析器」:{ 「同義詞」:{ 「過濾器」:[ 「小寫」, 「同義詞」 ], 「標記生成器」: 「空白」 } } – Ranveer

+0

@Ranveer是要清楚我如果您使用的是標準分析儀,則指出潛在的問題。看起來你不是,而你描述的分析器是合理的。 你可以發佈_analyze?field =傳遞C#的技能的輸出嗎?您可能還想看看elyzer,它有助於調試分析儀https://github.com/o19s/elyzer –

+0

感謝您的支持。我沒有使用同義詞分析器索引技能,只有使用同義詞分析器索引內容屬性。 – Ranveer

相關問題