gpt4 book ai didi

java - 在JAVA中使用Solr和MySQL进行查询

转载 作者:行者123 更新时间:2023-11-29 23:21:24 25 4
gpt4 key购买 nike

我有一个使用 Solr 索引的 MySQL 数据库,出于我的目的,我需要查询该数据库内的数据。我想执行“软”查询,就像网络上的每个搜索引擎一样。

我正在尝试在 schema.xml 中设置两个示例字段

<uniqueKey>organization_id</uniqueKey>

<field name="organization_id" type="string" indexed="true" stored="true" required="true"/>
<field name="name" type="string" indexed="true" stored="true"/>

这是我的 solrconfig.xml

<requestHandler name="/dataimport"
class="org.apache.solr.handler.dataimport.DataImportHandler">
<lst name="defaults">
<str name="config">data-config.xml</str>
</lst>
</requestHandler>

最后,data-config.xml

<dataConfig>
<dataSource type="JdbcDataSource" driver="com.mysql.jdbc.Driver"
url="jdbc:mysql://localhost/organizations2" user="****" password="****" />
<document name="content">
<entity name="id" query="SELECT * FROM organization"
deltaImportQuery="SELECT * FROM organization"
deltaQuery="SELECT * FROM organization">
<field column="organization_id" name="organization_id" />
<field column="name" name="name" />
</entity>
</document>
</dataConfig>

是否可以使用相似的组织名称进行经典查询,然后返回正确的公司?我尝试了一整天的搜索,但没有解决方案。

非常感谢

最佳答案

首先确保solr实例是running通过检查 8983 端口的 solr Admin。

接下来是看看是否能够从 solr Admin query 进行搜索屏幕。

schema.xml 中的名称字段可以是“text_string”而不是“string”以支持 LIKE查询。

由于我不确定您是否正在寻找一种根据问题从 Java 程序进行搜索的方法,因此以下列出了从 Java 进行搜索的选项:您可以使用 Apache 的 solrj 从 Java 进行搜索打包或者通过URLOpener+InputStreamReader+xpath组合。

使用 solrj 搜索数据的示例 java 片段:

HttpSolrServer solr = new HttpSolrServer("http://localhost:8983/solr");
SolrQuery query = new SolrQuery();
query.setQuery("company name");

使用 URLOpener+InputStreamReader+xpath 搜索数据的示例 java 片段:

String solrQuery = "http://localhost:8983/solr/select/?q=company name";
URLOpener uop = new URLOpener();
URLConnection conn= uop.openURL(solrQuery);
BufferedReader br = new BufferedReader(new InputStreamReader(conn.getInputStream()));
//Read the contents into string variable qryContent
Document xmlDocument =
DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(
new ByteArrayInputStream(qryContent.getBytes()));
XPath xPath = XPathFactory.newInstance().newXPath();
XPathExpression xPathExpression = xPath.compile(expression);
String titleExpression = "/response/result/doc/arr[@name='name']/str";
NodeList allTitleNodes =
(NodeList)xPathExpression.evaluate(titleExpression,XPathConstants.NODESET);

关于java - 在JAVA中使用Solr和MySQL进行查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27257090/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com