Azure搜索,部分单词搜索无法正常工作

时间:2017-01-01 10:18:17

标签: azure azure-search

搜索短语的部分内容会以奇怪的顺序返回结果, 例如,给出这两个文件

class SecondTabController: UIViewController {

@IBOutlet weak var labelTwo: UILabel!

override func viewDidLoad() {
    super.viewDidLoad()
    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(wifiConnection), name: "wifi", object: nil)

    NSNotificationCenter.defaultCenter().addObserver(self, selector: #selector(noConnection), name: "noWifi", object: nil)
 }

func wifiConnection(){
    self.labelTwo.text = "Wifi Connection"
 }

func noConnection(){
    self.labelTwo.text = "No Connection"
 }

deinit{
    NSNotificationCenter.defaultCenter().removeObserver(self, name: "wifi", object: nil)
    NSNotificationCenter.defaultCenter().removeObserver(self, name: "noWifi", object: nil)
 }
}

并寻找"家伙@ twingoco"将在第一个文档之前返回第二个文档,尽管很明显人们会期望看到第一个文档,它具有" CustomerEmail"字段几乎与短语一词相同。

搜索在门户网站内完成,除搜索字词外没有其他参数。 在搜索完整的电子邮件时,预期结果会先出现。

请不要参考"电子邮件短语"的具体情况,我一般会询问如何使搜索也考虑到部分短语。

1 个答案:

答案 0 :(得分:3)

此问题与Lucene处理电子邮件地址的方式有关。 Azure搜索使用Lucene分析器作为其默认分析器:https://lucene.apache.org/core/5_2_0/core/org/apache/lucene/analysis/Analyzer.html

标准Lucene分析器将电子邮件视为单个令牌,这就是部分搜索不会为您创建点击的原因。 (与你搜索“car”类似,即使它是一个前缀,你也不会受到“小心”的打击。有关此问题的更多信息,请参见此处:Querying email addresses indexed by lucene

好消息是,您可以创建一个自定义tokanizer来帮助您解决此问题:检查已接受的答案Using Lucene to search for email addresses以查看如何实现此类标记生成器的方法,并通过Azure搜索查看此文档了解如何使用自定义分析器:https://azure.microsoft.com/en-gb/blog/custom-analyzers-in-azure-search

祝你好运!