php可以用lucene吗,php – Lucene外国字符问题
我在使用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外国字符问题相关推荐
- Lucene学习-深入Lucene分词器,TokenStream获取分词详细信息
Lucene学习-深入Lucene分词器,TokenStream获取分词详细信息 在此回复牛妞的关于程序中分词器的问题,其实可以直接很简单的在词库中配置就好了,Lucene中分词的所有信息我们都可以从 ...
- 【Lucene】Apache Lucene全文检索引擎架构之中文分词和高亮显示4
前面总结的都是使用Lucene的标准分词器,这是针对英文的,但是中文的话就不顶用了,因为中文的语汇与英文是不同的,所以一般我们开发的时候,有中文的话肯定要使用中文分词了,这一篇博文主要介绍一下如何使用 ...
- Lucene之八(Lucene的高亮显示)
在Lucene的org.apache.lucene.search.highlight包中提供了关于高亮显示检索关键字的工具.我们在使用百度.Google搜索的时候,检索结果显示的时候,在摘要中实现与关 ...
- ElasticSearch特点|B+Tree|lucene倒排索引结构|lucene与elasticsearch的关系|基本概念
ElasticSearch特点 1. 天然分片,天然集群: es 把数据分成多个shard,下图中的P0-P2,多个shard可以组成一份完整的数据,这些shard可以分布在集群中的各个机器节点中.随 ...
- lucene(一):lucene是什么?
前言 什么是搜索 简单的说,搜索就是搜寻.查找,在IT行业中就是指用户输入关键字,通过相应的算法,查询并返回用户所需要的信息. 普通的数据库搜索 类似:select * from 表名 where 字 ...
- 【Lucene】Apache Lucene全文检索引擎架构之中文分词和高亮显示
欢迎关注我新搭建的博客:http://www.itcodai.com/ 前面总结的都是使用Lucene的标准分词器,这是针对英文的,但是中文的话就不顶用了,因为中文的语汇与英文是不同的,所以一般我们开 ...
- 2021年大数据ELK(三):Lucene全文检索库介绍
全网最详细的大数据ELK文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 一.什么是全文检索 1.结构化数据与非结构化数据 2.搜索结构化 ...
- lucene.net mysql_用Lucene[1].net对数据库建立索引及搜索+
cs代码 using System; using System.Collections; using System.ComponentModel; using System.Data; using S ...
- 【Java】Lucene检索引擎详解
基于Java的全文索引/检索引擎--Lucene Lucene不是一个完整的全文索引应用,而是是一个用Java写的全文索引引擎工具包,它可以方便的嵌入到各种应用中实现针对应用的全文索引/检索功能. L ...
最新文章
- 用 mongodb + elasticsearch 实现中文检索
- 数据结构 非线性结构 树 介绍及存储方法
- 读取bmp格式数据--实践思考
- [转载] Java中this和super关键字分别是什么意思
- Xcode模版生成文件头部注释
- c#实现对sqlserver的增删改操做 1117
- C#实现较为实用的SQLhelper
- 分配菜品类别: 展开 收起_运营技巧:让产品数据决定菜品的去与留
- 修改Launcher2欢迎页面字符重叠
- 三国战纪2 ,西游2的FBA 移植攻略!
- 享受科研,心怀远方:青年学者刘元玮的成长之路
- Unity中模型的面数问题
- Thinking -- CSS从根解决选择前一个兄弟元素
- react native 添加自定义字体
- springboot+vue+Elementui学生考勤在线请假系统
- 橘子学docker01之基本玩法
- 男的依然禽兽,女的已禽兽不如
- Android 12 分屏模式配置
- 7.4 期望值和方差
- 使用 CV2库进行摄像头照片获取
热门文章
- 贪心算法 (Greedy Algorithm)
- matlab2c使用c++实现matlab函数系列教程-binostat函数
- Triple Generative Adversarial Nets
- 腾讯云Ubuntu20.04配置Jupyter notebook
- 三极管的经典模型——两个二极管连接和三极管人(transistor man)
- luogu p1652 圆
- radio select的 option使用
- Robocode教程4——Robocode的游戏物理
- ORA-12541:TNS: 没有监听器.解决方法!
- [转载] json字符串转list_Python入门进阶教程JSON操作