编程语言
首页 > 编程语言> > php – 如何在Zend Lucene中找到“Foo Bar”时找到“FooBar”

php – 如何在Zend Lucene中找到“Foo Bar”时找到“FooBar”

作者:互联网

我正在使用Zend Lucene构建一个php网站的搜索功能,我遇到了问题.
我的网站是商店总监(类似的东西).

例如,我有一个名为“FooBar”的商店,但我的访客搜索“Foo Bar”并获得零结果.此外,如果一家商店被命名为“Foo Bar”,并且访客搜索“FooBar”,则找不到任何内容.

我试图搜索“foobar~”(模糊搜索),但没有找到名为“Foo Bar”的文章

是否有特定的方法来构建索引或进行查询?

解决方法:

选项1:在不同的点将输入查询字符串分成两部分并进行搜索.例如.在这种情况下,查询将是(fo bar)OR(foo bar)OR(foob ar)问题是此标记化假定输入查询字符串中有两个标记.此外,您可能会获得额外的,可能无关的结果,例如(foob ar)的结果

选项2:在索引和查询时使用n-gram标记化.索引“foo bar”的标记将是fo,oo,ba,ar.在使用foobar搜索时,令牌将是fo,oo,ob,ba,ar.使用OR作为运算符进行搜索将为您提供顶部最大n-gram匹配的文档.这可以通过NGramTokenizer实现

标签:php,lucene,zend-framework,fuzzy-search,zend-search-lucene
来源: https://codeday.me/bug/20190701/1344874.html