我在使用Zend_Lucene和åäö这样的外国字符时遇到了一些严重的问题.创建索引和查询时会出现这些问题.我已经尝试了iso-8859-1和utf-8.

ISO-8859-1

不起作用的查询看起来像“_area:skåne”.使用Zend_Lucene我没有匹配,但如果我在Luke中运行此查询,我会得到许多匹配的文档.

该索引包含20个字段.使用以下语法添加“_area”字段:

$doc->addField(Zend_Search_Lucene_Field::keyword('_area', strtolower($item['area']), 'iso-8859-1'));

我正在使用Zend_Search_Lucene_Analysis_Analyzer_Common_TextNum_CaseInsensitive分析器.

在运行索引时,有时会出现以下错误消息(索引的文档是从带有iso-8859-1编码的DB中随机选择的)

Notice: iconv(): Detected an illegal character in input string in TextNum.php.

这是通过检查$this-> _input是否为空来“解决”,因为它似乎引起了通知.注意:奇怪的查询结果是预先存在的条件.

当我使用外来字符搜索关键字字段时,我收到上面的错误,但是当我搜索文本字段时,它的行为有所不同.然后它会在下面生成大约一百个错误.

Notice: Undefined offset: 1996 in \Zend\Search\Lucene\Search\Query\MultiTerm.php on line 472

但它产生看起来像正确的结果集!另外,第二个查询不会在Luke中生成任何结果.

UTF-8

我也尝试过UTF-8,因为据我所知,Zend_Lucene在内部使用它.由于数据集是ISO-8859-1,我使用utf8_encode进行转换.但索引会产生以下错误.

Notice: Undefined offset: 266979 in

\Zend\Search\Lucene\Index\SegmentInfo.php

on line 632

Notice: Trying to get property of

non-object in

\Zend\Search\Lucene\Index\SegmentMerger.php

on line 196

Notice: Trying to get property of

non-object in

\Zend\Search\Lucene\Index\SegmentMerger.php

on line 200

Notice: Undefined index: in

\Zend\Search\Lucene\Index\SegmentWriter.php

on line 231

Notice: Trying to get property of

non-object in

\Zend\Search\Lucene\Index\SegmentWriter.php

on line 231

Notice: Undefined offset: 250595 in

\Zend\Search\Lucene\Index\SegmentInfo.php

on line 2020

Notice: Trying to get property of

non-object in

\Zend\Search\Lucene\Index\SegmentInfo.php

on line 2020

Notice: Undefined index: in

\Zend\Search\Lucene\Index\SegmentWriter.php

on line 465

所以.有人可以解释一下吗? :)我相信(经过几天的谷歌搜索),我不是唯一一个遇到这个.

解决方法:

我建议你尝试使用UTF-8 compatible text analyzer.

看起来您使用的分析仪会破坏非ASCII字符.

您应确保文本输入正确,并以正确的格式到达Lucene.

标签:php,lucene,zend-framework

来源: https://codeday.me/bug/20190710/1423752.html

php可以用lucene吗,php – Lucene外国字符问题相关推荐

  1. Lucene学习-深入Lucene分词器,TokenStream获取分词详细信息

    Lucene学习-深入Lucene分词器,TokenStream获取分词详细信息 在此回复牛妞的关于程序中分词器的问题,其实可以直接很简单的在词库中配置就好了,Lucene中分词的所有信息我们都可以从 ...

  2. 【Lucene】Apache Lucene全文检索引擎架构之中文分词和高亮显示4

    前面总结的都是使用Lucene的标准分词器,这是针对英文的,但是中文的话就不顶用了,因为中文的语汇与英文是不同的,所以一般我们开发的时候,有中文的话肯定要使用中文分词了,这一篇博文主要介绍一下如何使用 ...

  3. Lucene之八(Lucene的高亮显示)

    在Lucene的org.apache.lucene.search.highlight包中提供了关于高亮显示检索关键字的工具.我们在使用百度.Google搜索的时候,检索结果显示的时候,在摘要中实现与关 ...

  4. ElasticSearch特点|B+Tree|lucene倒排索引结构|lucene与elasticsearch的关系|基本概念

    ElasticSearch特点 1. 天然分片,天然集群: es 把数据分成多个shard,下图中的P0-P2,多个shard可以组成一份完整的数据,这些shard可以分布在集群中的各个机器节点中.随 ...

  5. lucene(一):lucene是什么?

    前言 什么是搜索 简单的说,搜索就是搜寻.查找,在IT行业中就是指用户输入关键字,通过相应的算法,查询并返回用户所需要的信息. 普通的数据库搜索 类似:select * from 表名 where 字 ...

  6. 【Lucene】Apache Lucene全文检索引擎架构之中文分词和高亮显示

    欢迎关注我新搭建的博客:http://www.itcodai.com/ 前面总结的都是使用Lucene的标准分词器,这是针对英文的,但是中文的话就不顶用了,因为中文的语汇与英文是不同的,所以一般我们开 ...

  7. 2021年大数据ELK(三):Lucene全文检索库介绍

    全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 一.什么是全文检索 1.结构化数据与非结构化数据 2.搜索结构化 ...

  8. lucene.net mysql_用Lucene[1].net对数据库建立索引及搜索+

    cs代码 using System; using System.Collections; using System.ComponentModel; using System.Data; using S ...

  9. 【Java】Lucene检索引擎详解

    基于Java的全文索引/检索引擎--Lucene Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能. L ...

最新文章

  1. 用 mongodb + elasticsearch 实现中文检索
  2. 数据结构 非线性结构 树 介绍及存储方法
  3. 读取bmp格式数据--实践思考
  4. [转载] Java中this和super关键字分别是什么意思
  5. Xcode模版生成文件头部注释
  6. c#实现对sqlserver的增删改操做 1117
  7. C#实现较为实用的SQLhelper
  8. 分配菜品类别: 展开 收起_运营技巧:让产品数据决定菜品的去与留
  9. 修改Launcher2欢迎页面字符重叠
  10. 三国战纪2 ,西游2的FBA 移植攻略!
  11. 享受科研,心怀远方:青年学者刘元玮的成长之路
  12. Unity中模型的面数问题
  13. Thinking -- CSS从根解决选择前一个兄弟元素
  14. react native 添加自定义字体
  15. springboot+vue+Elementui学生考勤在线请假系统
  16. 橘子学docker01之基本玩法
  17. 男的依然禽兽,女的已禽兽不如
  18. Android 12 分屏模式配置
  19. 7.4 期望值和方差
  20. 使用 CV2库进行摄像头照片获取

热门文章

  1. 贪心算法 (Greedy Algorithm)
  2. matlab2c使用c++实现matlab函数系列教程-binostat函数
  3. Triple Generative Adversarial Nets
  4. 腾讯云Ubuntu20.04配置Jupyter notebook
  5. 三极管的经典模型——两个二极管连接和三极管人(transistor man)
  6. luogu p1652 圆
  7. radio select的 option使用
  8. Robocode教程4——Robocode的游戏物理
  9. ORA-12541:TNS: 没有监听器.解决方法!
  10. [转载] json字符串转list_Python入门进阶教程JSON操作