solr 搜索不到我要的结果

liujun3512159 2012-08-16 11:58:18
我从官网上下载的solr然后发布了,而且在配置文件那边做了些修改,如:
schema.xml

<!--mmseg4j field types-->
<fieldType name="textComplex" class="solr.TextField" positionIncrementGap="100" >
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="D:/lucene/solr/dic"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>


我先在http://localhost:8080/solr/core0/admin/analysis.jsp 中运行了,如图

我输入了如下内容:
德基电影票、南京横店电影票、克里斯丁
发现是可以分词“南京”的
但是,我用solrj 实现了搜索功能,当我输入“南京”后,发现有部分数据搜索不到,比方说,"德基电影票、南京横店电影票、克里斯丁"这条记录就搜索不到,请问这是怎么回事哦?
...全文
308 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
wang_shx 2012-08-21
  • 打赏
  • 举报
回复
不可能吧. 我上个项目用的solr 就是这样配置的.
还有, 你的schema 文件中怎么不配置主键呢 ? 会不会是你在传入查询条件的时候出问题了? 这两个条件是 or 的关系.
liujun3512159 2012-08-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]
你的SQL语句是 select * from .... 这样不好, 修改成 select busi_code , busi_name , busi_acc_bank from table . 所谓增加一个字段是这样的 select busi_code as code , busi_name as name , busi_name as name1 , busi_acc_bank as bank f……
[/Quote]

我试过了,貌似还是不行哦,呜呜
wang_shx 2012-08-18
  • 打赏
  • 举报
回复
你的SQL语句是 select * from .... 这样不好, 修改成 select busi_code , busi_name , busi_acc_bank from table . 所谓增加一个字段是这样的 select busi_code as code , busi_name as name , busi_name as name1 , busi_acc_bank as bank from table
然后在schema.xml多配置一个name1的对应, 这个对应就是使用默认的分词, 记住, 不要用中文分词.
然后在solr 传入搜索条件的时候, name 和name1 都进行搜索, 这样要注意你的id , 还有schema.xml中属性主键属性的配置.
其实你现在只发现了南京, solr中文分词最大的问题是对于一个汉字的搜索的支持是很不好的.
wang_shx 2012-08-17
  • 打赏
  • 举报
回复
你可以在你的字典表里看看有没有南京的分词. 另外还有就是数据中的顿号会不会有影响.
建议你可以对搜索的field再配置一个英文的对单个词的搜索. 也就是说对同样的字段在schema.xml中再配置一个对应的field, 这个field对应的分词不要用英文的, 用系统默认的就可以了.
这样应该可以找到
wang_shx 2012-08-17
  • 打赏
  • 举报
回复
你可以在你的字典表里看看有没有南京的分词. 另外还有就是数据中的顿号会不会有影响.
建议你可以对搜索的field再配置一个英文的对单个词的搜索. 也就是说对同样的字段在schema.xml中再配置一个对应的field, 这个field对应的分词不要用英文的, 用系统默认的就可以了.
这样应该可以找到
乔治先生 2012-08-17
  • 打赏
  • 举报
回复
这个问题,我也遇到过,不知道怎么解决,搂主知道的话,请告诉我哦
liujun3512159 2012-08-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
你可以在你的字典表里看看有没有南京的分词. 另外还有就是数据中的顿号会不会有影响.
建议你可以对搜索的field再配置一个英文的对单个词的搜索. 也就是说对同样的字段在schema.xml中再配置一个对应的field, 这个field对应的分词不要用英文的, 用系统默认的就可以了.
这样应该可以找到
[/Quote]

我不是很懂,你说的再建一个对应的field的说法哦,请麻烦解释下哦

请看下我的配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<dataConfig>
<dataSource type="JdbcDataSource" driver="oracle.jdbc.driver.OracleDriver" url="jdbc:oracle:thin:@192.168.5.174:1521:lmsh" user="jssystem" password="123456"/>
<document name="messages">
<entity name="message" pk="busiCode" transformer="ClobTransformer" query="select * from t_meta_busiinfo">
<field column="busi_code" name="busiCode" />
<field column="busi_name" name="busiName"/>
<field column="busi_acc_bank" name="busiAccBank"/>
</entity>
</document>
</dataConfig>

schema.xml文件中有以下内容:
<fieldType name="textComplex" class="solr.TextField" positionIncrementGap="100" >
<analyzer>
<tokenizer class="com.chenlb.mmseg4j.solr.MMSegTokenizerFactory" mode="complex" dicPath="D:/lucene/solr/dic"/>
<filter class="solr.LowerCaseFilterFactory"/>
</analyzer>
</fieldType>

<field name="busiName" type="textComplex" indexed="true" stored="true"/>

我搜索就是针对busiName进行搜索
请问我在schema.xml怎么增加field哦
liujun3512159 2012-08-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]
你可以在你的字典表里看看有没有南京的分词. 另外还有就是数据中的顿号会不会有影响.
建议你可以对搜索的field再配置一个英文的对单个词的搜索. 也就是说对同样的字段在schema.xml中再配置一个对应的field, 这个field对应的分词不要用英文的, 用系统默认的就可以了.
这样应该可以找到
[/Quote]

分词字典表中是有南京的呢,我已经查过了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧